You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1634 lines
70 KiB
1634 lines
70 KiB
var msgs,
|
|
iCuryIndex = 0,
|
|
iTipsCount = 0,
|
|
online_Users = [],
|
|
Ann = {
|
|
div: $('div.notice-box'),
|
|
ul: $('div.notice-box').find('ul'),
|
|
li_class: 'li-list',
|
|
active: 'li-active',
|
|
fadeOut: 500,
|
|
timer: null
|
|
},
|
|
AnnList = [],
|
|
/**上線登陸註冊信息
|
|
* @param {String} islogin 是否登入
|
|
*/
|
|
fnRegister = function (islogin) {
|
|
var orgid = UserInfo.OrgID,
|
|
userid = UserInfo.MemberID,
|
|
username = UserInfo.MemberName;
|
|
//上線
|
|
msgs.server.register(orgid, userid, username, islogin);
|
|
},
|
|
/**
|
|
* 查看公告明細
|
|
* @param {String} id 公告guid
|
|
* @param {String} flag 是否包含關閉按鈕
|
|
*/
|
|
fnOpenAnn = function (id, flag) {
|
|
getHtmlTmp('/Page/Pop/AnnounceInfo.html').done(function (html) {
|
|
var oAnnInfo = Enumerable.From(AnnList).Where(function (item) { return item.AnnouncementID === id; }).First();
|
|
oAnnInfo.CategoryName = i18next.t('common.Announcement');// ╠common.Announcement⇒公 告╣
|
|
oAnnInfo.CreateDate = newDate(oAnnInfo.CreateDate, 'date');
|
|
var sHtml = $('<script type="text/x-jsrender"/>').html(html).render(oAnnInfo);
|
|
layer.open({
|
|
type: 1, //0(信息框,默认)1(页面层)2(iframe层)3(加载层)4(tips层)
|
|
title: oAnnInfo.CategoryName,
|
|
//title: false, //不显示标题栏
|
|
area: '640px;',//寬度
|
|
shade: 0.75,//遮罩
|
|
closeBtn: flag ? 0 : 1,
|
|
shadeClose: true,
|
|
//maxmin: true, //开启最大化最小化按钮
|
|
id: 'layer_Announce', //设定一个id,防止重复弹出
|
|
offset: '100px',//右下角弹出
|
|
anim: 0,//彈出動畫
|
|
btn: flag ? [i18next.t('common.Gotit')] : [],
|
|
btnAlign: 'c',//按鈕位置
|
|
content: sHtml,
|
|
success: function (layero, index) {
|
|
layero.find('a').each(function () {
|
|
if (($(this).attr('href') || '').indexOf('net/upload/file') > -1 && (($(this).prev().attr('src') || '').indexOf('icon_jpg') > -1 || ($(this).prev().attr('src') || '').indexOf('icon_pdf') > -1)) {
|
|
$(this).attr('target', '_new');
|
|
}
|
|
});
|
|
layero.find('.layui-layer-title').css({ 'text-align': 'center', 'padding': '0 30px 0 20px', 'font-size': '20px', 'font-weight': '600' });
|
|
slimScroll();
|
|
},
|
|
yes: function (index, layero) {
|
|
CallAjax(ComFn.W_Com, ComFn.GetCount, {
|
|
Params: {
|
|
read: {
|
|
AnnouncementID: oAnnInfo.AnnouncementID,
|
|
CreateUser: UserInfo.MemberID
|
|
}
|
|
}
|
|
}, function (res) {
|
|
if (res.d === 0) {
|
|
CallAjax(ComFn.W_Com, ComFn.GetAdd, {
|
|
Params: {
|
|
read: {
|
|
AnnouncementID: oAnnInfo.AnnouncementID,
|
|
CreateUser: UserInfo.MemberID,
|
|
CreateDate: newDate()
|
|
}
|
|
}
|
|
});
|
|
}
|
|
});
|
|
setTimeout(function () { fnGetAnnouncements(); }, 60000);
|
|
layer.close(index);
|
|
}
|
|
});
|
|
});
|
|
},
|
|
/**
|
|
* 查看公告明細
|
|
* @param {Object} tips 提示資料
|
|
*/
|
|
fnShowTips = function (tips) {
|
|
getHtmlTmp('/Page/Pop/AnnounceInfo.html').done(function (html) {
|
|
var oTips = {};
|
|
oTips.CategoryName = i18next.t('common.SystemTips');// ╠common.SystemTips⇒系統提醒╣
|
|
oTips.CreateUserName = '';
|
|
oTips.CreateDate = '';
|
|
oTips.Description = '';
|
|
var saTips = JSON.parse(tips);
|
|
$.each(saTips, function (idx, _tips) {
|
|
oTips.Description += '<p class="tipslink" data-from="' + _tips.SourceFrom + '" data-parm="' + _tips.Params + '"><a style="cursor: pointer;"><span style="font-size: 14px;">' + (idx + 1) + '. ' + _tips.EventName + ' </span></a><span>' + _tips.Important + ' ' + newDate(_tips.StartDate, true) + '~' + newDate(_tips.StartDate, true) + '</span></p>';
|
|
});
|
|
var sHtml = $('<script type="text/x-jsrender"/>').html(html).render(oTips);
|
|
layer.open({
|
|
type: 1, //0(信息框,默认)1(页面层)2(iframe层)3(加载层)4(tips层)
|
|
title: oTips.CategoryName,
|
|
area: '640px;',//寬度
|
|
shade: 0.75,//遮罩
|
|
closeBtn: 1,
|
|
shadeClose: true,
|
|
id: 'layer_Tips', //设定一个id,防止重复弹出
|
|
offset: '100px',//右下角弹出
|
|
anim: 0,//彈出動畫
|
|
btn: [i18next.t('common.Gotit')], // ╠common.Gotit⇒知道了╣
|
|
btnAlign: 'c',//按鈕位置
|
|
content: sHtml,
|
|
success: function (layero, index) {
|
|
layero.find('.tipslink>a').click(function () {
|
|
var sFrom = $(this).parent().attr('data-from').replace('_Qry', '_Upd'),
|
|
sParm = $(this).parent().attr('data-parm');
|
|
openPageTab(sFrom, sParm);
|
|
layer.close(index);
|
|
});
|
|
layero.find('.layui-layer-title').css({ 'text-align': 'center', 'padding': '0 30px 0 20px', 'font-size': '20px', 'font-weight': '600' });
|
|
slimScroll();
|
|
}
|
|
});
|
|
});
|
|
},
|
|
/**
|
|
* @param {Object} tips 提示資料
|
|
*/
|
|
fnAttendanceTips = function (tips) {
|
|
getHtmlTmp('/Page/Pop/AnnounceInfo.html').done(function (html) {
|
|
var oTips = {};
|
|
oTips.CategoryName = i18next.t('common.EiptemTips');// ╠common.EiptemTips⇒考勤未打卡提醒╣
|
|
oTips.CreateUserName = '';
|
|
oTips.CreateDate = '';
|
|
oTips.Description = '';
|
|
var saTips = JSON.parse(tips);
|
|
$.each(saTips, function (idx, _tips) {
|
|
oTips.Description += '<p class="tipslink" data-id="' + _tips.NO + '" data-user="' + _tips.Owner + '"><a style="cursor: pointer;"><span style="font-size: 14px;">' + (idx + 1) + '. ' + _tips.Title + ' </span></a> <a class="a-url" data-i18n="common.CancelTips">取消提醒</a></p>';// ╠common.CancelTips⇒取消提醒╣
|
|
});
|
|
var sHtml = $('<script type="text/x-jsrender"/>').html(html).render(oTips);
|
|
layer.open({
|
|
type: 1, //0(信息框,默认)1(页面层)2(iframe层)3(加载层)4(tips层)
|
|
title: oTips.CategoryName,
|
|
area: '680px;',//寬度
|
|
shade: 0.75,//遮罩
|
|
closeBtn: 1,
|
|
shadeClose: true,
|
|
id: 'layer_Tips', //设定一个id,防止重复弹出
|
|
offset: '100px',//右下角弹出
|
|
anim: 0,//彈出動畫
|
|
btn: [i18next.t('common.Gotit'), i18next.t('common.CancelAllTips')], // ╠common.CancelAllTips⇒取消所有提醒╣
|
|
btnAlign: 'c',//按鈕位置
|
|
content: sHtml,
|
|
success: function (layero, index) {
|
|
layero.find('.a-url').click(function () {
|
|
var oTips = $(this).parent(),
|
|
sTipsId = oTips.attr('data-id');
|
|
fnDeleteEipTips(sTipsId).done(function () {
|
|
oTips.remove();
|
|
});
|
|
});
|
|
layero.find('.layui-layer-title').css({ 'text-align': 'center', 'padding': '0 30px 0 20px', 'font-size': '20px', 'font-weight': '600' });
|
|
slimScroll();
|
|
},
|
|
yes: function (index, layero) {
|
|
layer.close(index);
|
|
},
|
|
btn2: function (index, layero) {
|
|
var saIds = [];
|
|
layero.find('.tipslink').each(function () {
|
|
saIds.push({
|
|
NO: $(this).attr('data-id')
|
|
});
|
|
});
|
|
fnDeleteEipTips(saIds);
|
|
}
|
|
});
|
|
});
|
|
},
|
|
/**
|
|
* 公告實現輪播
|
|
*/
|
|
fnAnnouncementTimer = function () {
|
|
if (Ann.ul.find('li').length > 1) {
|
|
Ann.ul.animate({
|
|
marginTop: "-5.7rem"
|
|
}, 1000, function () {
|
|
$(this).css({ marginTop: "0rem" }).find("li:first").appendTo(this);
|
|
});
|
|
}
|
|
},
|
|
/**
|
|
* 彈出公告訊息
|
|
* @param {Object} list 公告list
|
|
*/
|
|
fnShowAlertAnnouncement = function (list) {
|
|
if (list) {
|
|
$.each(list, function (index, item) {
|
|
if (!item.IsAlert) {
|
|
fnOpenAnn(item.AnnouncementID, true);
|
|
return false;
|
|
}
|
|
});
|
|
}
|
|
},
|
|
/**
|
|
* 顯示一般輪播公告
|
|
* @param {Object} list 公告list
|
|
*/
|
|
fnShowSlideAnnouncement = function (list) {
|
|
//加載公告
|
|
var saLi = [];
|
|
AnnList = list;
|
|
$.each(list, function (idx, item) {
|
|
var sFontColor = item.FontColor || '#000',
|
|
sTitle = item.Title;
|
|
if (sTitle.length > 27) {
|
|
sTitle = sTitle.substr(0, 27) + ' . . .';
|
|
}
|
|
saLi.push($('<li />').addClass(Ann.li_class).attr('data-guid', item.AnnouncementID).append($('<a/>',
|
|
{
|
|
html: sTitle,
|
|
click: function () {
|
|
fnOpenAnn(item.AnnouncementID, false);
|
|
}
|
|
}).css('color', sFontColor)));
|
|
});
|
|
if (saLi.length > 0) {
|
|
Ann.ul.html('').append(saLi);
|
|
Ann.div.show();
|
|
}
|
|
else {
|
|
Ann.div.hide();
|
|
}
|
|
|
|
if (Ann.timer) clearInterval(Ann.timer);
|
|
Ann.timer = setInterval(fnAnnouncementTimer, 5000);
|
|
Ann.ul.find('li').mousemove(function () {
|
|
clearInterval(Ann.timer);
|
|
}).mouseout(function () {
|
|
Ann.timer = setInterval(fnAnnouncementTimer, 5000);
|
|
});
|
|
},
|
|
/**
|
|
* 獲取當前公告信息
|
|
*/
|
|
fnGetAnnouncements = function () {
|
|
if (!UserInfo.MemberID) { return; }
|
|
g_api.ConnectLite(Service.com, 'GetAnnlist', {}, function (res) {
|
|
if (res.RESULT) {
|
|
AnnList = res.DATA.rel;
|
|
fnShowSlideAnnouncement(AnnList);
|
|
fnShowAlertAnnouncement(AnnList);
|
|
}
|
|
});
|
|
},
|
|
|
|
//提醒未打卡人員
|
|
fnShowAbsenceNotification = function (saAttendances) {
|
|
getHtmlTmp('/Page/Pop/AnnounceInfo.html').done(function (html) {
|
|
let btnwords = i18next.t('common.Gotit');
|
|
if (!btnwords)
|
|
btnwords = "知道了";
|
|
var oTips = {};
|
|
oTips.CategoryName = i18next.t('common.EiptemTips');// ╠common.EiptemTips⇒考勤未打卡提醒╣
|
|
oTips.CreateUserName = '';
|
|
oTips.CreateDate = '';
|
|
oTips.Description = '';
|
|
var Days = '';
|
|
|
|
$.each(saAttendances, function (idx, _sad) {
|
|
let CardDate = new Date(_sad.CardDate);
|
|
Days += CardDate.formate("yyyy.MM.dd (EEE)") + ',';
|
|
});
|
|
oTips.Description = '<span style="font-size: 18px;"><p>您於' + Days + '</P><p>刷卡紀錄異常,請盡快辦理請假程序。</p><p>如有疑問,請向管理員詢問,謝謝!</p></span>';
|
|
var sHtml = $('<script type="text/x-jsrender"/>').html(html).render(oTips);
|
|
layer.open({
|
|
type: 1, //0(信息框,默认)1(页面层)2(iframe层)3(加载层)4(tips层)
|
|
title: oTips.CategoryName,
|
|
area: '680px;',//寬度,
|
|
shade: 0.8,//遮罩
|
|
closeBtn: 1,
|
|
shadeClose: true,
|
|
id: 'layer_Attendances', //设定一个id,防止重复弹出
|
|
offset: '100px',//右下角弹出
|
|
anim: 0,//彈出動畫
|
|
btn: [btnwords],
|
|
btnAlign: 'c',//按鈕位置
|
|
content: sHtml,
|
|
success: function (layero, index) {
|
|
slimScroll();
|
|
},
|
|
yes: function (index, layero) {
|
|
g_db.SetItem("AbsenceFromLastWeek", "True");
|
|
layer.close(index);
|
|
},
|
|
});
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 獲取上週未刷卡/遲到/早退,周一僅提醒一次。
|
|
*/
|
|
fnGetAbsenceFromLastWeek = function () {
|
|
let DayOfWeek = new Date().getDay();
|
|
let HadNoticed = g_db.GetItem("AbsenceFromLastWeek");
|
|
if (!UserInfo.MemberID) { return; }
|
|
if (DayOfWeek !== 1) {
|
|
g_db.SetItem("AbsenceFromLastWeek", "");
|
|
}
|
|
else if (!HadNoticed && DayOfWeek === 1) {
|
|
g_api.ConnectLite(Service.com, 'GetAbsenceFromLastWeek', {}, function (res) {
|
|
if (res.RESULT) {
|
|
let AbsenceList = res.DATA.rel;
|
|
if (AbsenceList.length > 0)
|
|
fnShowAbsenceNotification(AbsenceList);
|
|
else
|
|
g_db.SetItem("AbsenceFromLastWeek", "True");
|
|
}
|
|
});
|
|
}
|
|
},
|
|
|
|
/**
|
|
* 獲取所有提示
|
|
*/
|
|
fnGetTips = function () {
|
|
CallAjax(ComFn.W_Com, ComFn.GetList, {
|
|
Type: '',
|
|
Params: {
|
|
tips: {
|
|
IsRead: 'N',
|
|
Owner: window.UserID,
|
|
OrgID: window.OrgID
|
|
},
|
|
sort: { CreateDate: 'desc' }
|
|
}
|
|
}, function (res) {
|
|
if (res.d) {
|
|
var saList = $.parseJSON(res.d),
|
|
myHelpers = {
|
|
dtformate: function (val) {
|
|
return newDate(val);
|
|
},
|
|
setIcon: function (type) {
|
|
var sIcon = 'icon-bell';
|
|
if (type === 'fa-check') {
|
|
sIcon = 'fa fa-check';
|
|
}
|
|
else if (type === 'fa-times') {
|
|
sIcon = 'fa fa-times';
|
|
}
|
|
return sIcon;
|
|
},
|
|
setBgcolor: function (type) {
|
|
var sBgcolor = 'success';
|
|
if (type === 'fa-check') {
|
|
sBgcolor = 'green';
|
|
}
|
|
else if (type === 'fa-times') {
|
|
sBgcolor = 'red';
|
|
}
|
|
return sBgcolor;
|
|
}
|
|
};
|
|
$.views.helpers(myHelpers);
|
|
iTipsCount = saList.length;
|
|
if (iTipsCount > 0) {
|
|
var sHtml = $('#temp_tips').render(saList);//angularJS
|
|
$('.tips-count').text(iTipsCount > 100 ? '99+' : iTipsCount);
|
|
$('.tipscount').text(iTipsCount);
|
|
$('#alltips').html(sHtml).find('.tips-item').on('click', function () {
|
|
var saUrl = $(this).attr('data-url').split('|'),
|
|
sPrgId = saUrl[0],
|
|
sParam = saUrl[1];
|
|
parent.openPageTab(sPrgId, sParam);
|
|
fnRemoveTips(false, $(this));
|
|
});
|
|
|
|
$('.stop-prevent').off('click').on('click', function (e) {
|
|
var that = this;
|
|
if ($(that).hasClass('tips-delete')) {
|
|
fnRemoveTips(false, $(that).parents('.tips-item'));
|
|
}
|
|
else if ($(that).hasClass('tips-clearall')) {
|
|
fnRemoveTips(true);
|
|
}
|
|
return false;
|
|
});
|
|
$('.tips-has,.tips-count,.tipscount').show();
|
|
$('.tips-empty').hide();
|
|
}
|
|
else {
|
|
$('.tips-empty').show();
|
|
$('.tips-has,.tips-count,.tipscount').hide();
|
|
}
|
|
}
|
|
});
|
|
},
|
|
/**
|
|
* 移除頁面提醒
|
|
* @param {Boolean} clearall 是否清空全部
|
|
* @param {HTMLElement} otips 當前資料物件
|
|
*/
|
|
fnRemoveTips = function (clearall, otips) {
|
|
var fnSet = function () {
|
|
$('.tips-count').text(iTipsCount > 100 ? '99+' : iTipsCount);
|
|
$('.tipscount').text(iTipsCount);
|
|
if (iTipsCount) {
|
|
$('.tips-has,.tips-count,.tipscount').show();
|
|
$('.tips-empty').hide();
|
|
}
|
|
else {
|
|
$('.tips-empty').show();
|
|
$('.tips-has,.tips-count,.tipscount').hide();
|
|
}
|
|
};
|
|
if (clearall) {
|
|
var saIds = [];
|
|
$('#alltips .tips-item').each(function () {
|
|
saIds.push({
|
|
NO: $(this).attr('data-id')
|
|
});
|
|
});
|
|
fnDeleteTips(saIds).done(function (res) {
|
|
if (res.d > 0) {
|
|
iTipsCount = 0;
|
|
$('#alltips').html('');
|
|
fnSet();
|
|
}
|
|
});
|
|
}
|
|
else {
|
|
fnDeleteTips(otips.attr('data-id')).done(function (res) {
|
|
if (res.d > 0) {
|
|
iTipsCount--;
|
|
otips.remove();
|
|
fnSet();
|
|
}
|
|
});
|
|
}
|
|
},
|
|
/**
|
|
* 刪除提醒資料
|
|
* @param {HTMLElement} tips 要刪除的消息ID
|
|
* @return {Function} ajax物件
|
|
*/
|
|
fnDeleteTips = function (tips) {
|
|
return CallAjax(ComFn.W_Com, ComFn.GetDel, {
|
|
Params: {
|
|
tips: typeof tips === 'string' ? { NO: tips } : tips
|
|
}
|
|
});
|
|
},
|
|
/**
|
|
* 刪除EIP提醒
|
|
* @param {HTMLElement} tips 要刪除的消息ID
|
|
* @return {Function} ajax物件
|
|
*/
|
|
fnDeleteEipTips = function (tips) {
|
|
return CallAjax(ComFn.W_Com, ComFn.GetDel, {
|
|
Params: {
|
|
clocktips: typeof tips === 'string' ? { NO: tips } : tips
|
|
}
|
|
});
|
|
},
|
|
/**
|
|
* 重組數組
|
|
* @param {Array} tipsusers 人員列表
|
|
* @return {Array} 人員組合ID
|
|
*/
|
|
fnReleaseUsers = function (tipsusers) {
|
|
var saUsers = [];
|
|
if (tipsusers && tipsusers.length > 0) {
|
|
$.each(tipsusers, function (idx, user) {
|
|
if (user) {
|
|
saUsers.push(window.OrgID + user);
|
|
}
|
|
});
|
|
}
|
|
return saUsers;
|
|
},
|
|
/**
|
|
* 刪除提醒資料
|
|
* @param {Array} data 提示資料
|
|
* @param {Array} tipsusers 人員列表
|
|
* @return {Object} ajax
|
|
*/
|
|
fnAddTips = function (data, tipsusers) {
|
|
return CallAjax(ComFn.W_Com, ComFn.GetAdd, {
|
|
Params: {
|
|
tips: data
|
|
}
|
|
}, function (res) {
|
|
if (res.d > 0) {
|
|
if (tipsusers) {
|
|
var sTipsUsers = fnReleaseUsers(tipsusers);
|
|
parent.msgs.server.pushTips(sTipsUsers);
|
|
}
|
|
}
|
|
});
|
|
},
|
|
/**
|
|
* 取得樹狀圖清單資料
|
|
* @param {String} sModid 模組ID
|
|
* @return {String} 當前模組下所有程式清單html字串
|
|
*/
|
|
getListMenu = function (sModid) {
|
|
var saProgramList = g_db.GetDic('programList') || [],
|
|
sectionData = new Array(2),
|
|
Menuli = '<ul class="nav nav-pills">', //左邊清單列表
|
|
Listli = '<ul>', //右邊清單列表
|
|
subStyle = ''; //設定模組樣式Class
|
|
|
|
//set Menu
|
|
$.each(saProgramList, function (i, program) {
|
|
if (program.ParentID === '' && program.ModuleID === sModid && program.ShowInList.toLowerCase() === 'y') {
|
|
Menuli += " <li id=\"" + program.ModuleID + "\" class='menu-layer-one onmenu active' onclick=\"setTreeMenu('" + program.Module + "'); setMenuStyle('" + program.ModuleID + "');return false;\"> ";
|
|
Menuli += " <a href='#' data-toggle='tab' class='menu-layer-one' data-i18n=common." + program.ModuleID + "></a></li> ";
|
|
} //功能清單中的管理模組頁簽標題轉換
|
|
else if (program.ParentID === '' && program.ModuleID !== sModid && program.ShowInList.toLowerCase() === 'y') {
|
|
Menuli += " <li id=\"" + program.ModuleID + "\" class='menu-layer-one drophide' onclick=\"setTreeMenu('" + program.ModuleID + "'); setMenuStyle('" + program.ModuleID + "');return false;\"> ";
|
|
Menuli += " <a href='#' data-toggle='tab' class='menu-layer-one' data-i18n=common." + program.ModuleID + "></a></li> ";
|
|
} //功能清單中的進出口頁簽標題轉換
|
|
});
|
|
|
|
//setList
|
|
$.each(saProgramList, function (e, program) {
|
|
if (program.ParentID === sModid && program.ShowInList.toLowerCase() === 'y') {
|
|
var subModule = '<ul>';
|
|
var moduleid = program.ModuleID;
|
|
$.each(saProgramList, function (i, program1) {
|
|
if (program1.ParentID === moduleid && program1.ShowInList.toLowerCase() === 'y') {
|
|
var sub2Module = "<ul>";
|
|
var sub2moduleid = program1.ModuleID;
|
|
$.each(saProgramList, function (m, program2) {
|
|
if (program2.ParentID === sub2moduleid && program2.ShowInList.toLowerCase() === 'y') {
|
|
var sub3Module = "<ul>";
|
|
var sub3moduleid = program2.ModuleID;
|
|
$.each(saProgramList, function (m, program3) {
|
|
if (program3.ParentID === sub3moduleid && program3.ShowInList.toLowerCase() === 'y') {
|
|
if (program3.FilePath === '#') {
|
|
sub3Module += " <li id=\"" + program3.ModuleID + "\" class='layer-four folderType'>";
|
|
sub3Module += " <a>" + program3.ModuleName + "</a></li> ";
|
|
}
|
|
else {
|
|
sub3Module += " <li id=\"" + program3.ModuleID + "\" class='layer-four ProgramType' onclick=\"if('" + program3.FilePath + "'!='#') parent.openPageTab('" + program3.ModuleID + "');if('" + program3.FilePath + "'=='#'){setTreeMenu('" + program3.ModuleID + "');}\"> ";
|
|
sub3Module += " <a href='#' data-i18n=common." + program3.ModuleID + "></a></li> ";
|
|
}//功能清單中系統管理子層(系統架構、參數管理、組織結構)的底層標題
|
|
}
|
|
});
|
|
sub3Module += '</ul>';
|
|
if (program2.FilePath === '#') {
|
|
sub2Module += " <li id=\"" + program2.ModuleID + "\" class='layer-three folderType'>";
|
|
sub2Module += " <a data-i18n=common." + program2.ModuleID + "></a>" + sub3Module + "</li> ";
|
|
}//功能清單中的頁簽標題轉換
|
|
else {
|
|
sub2Module += " <li id=\"" + program2.ModuleID + "\" class='layer-three ProgramType' onclick=\"if('" + program2.FilePath + "'!='#') parent.openPageTab('" + program2.ModuleID + "');if('" + program2.FilePath + "'=='#'){setTreeMenu('" + program2.ModuleID + "');}\"> ";
|
|
sub2Module += " <a href='#' data-i18n=common." + program2.ModuleID + "></a>" + sub3Module + "</li> ";
|
|
}//功能清單中系統管理下層的標題
|
|
}
|
|
});
|
|
sub2Module += '</ul>';
|
|
|
|
if (program1.FilePath === '#') {
|
|
subModule += " <li id=\"" + program1.ModuleID + "\" class='layer-two folderType noborder'> ";
|
|
subModule += " <a data-i18n=common." + program1.ModuleID + "></a>" + sub2Module + "</li>";
|
|
}//功能清單中系統管理的子層標題轉換
|
|
else {
|
|
subModule += " <li id=\"" + program1.ModuleID + "\" class='layer-two ProgramType' onclick=\"if('" + program1.FilePath + "'!='#') parent.openPageTab('" + program1.ModuleID + "');if('" + program1.FilePath + "'=='#'){setTreeMenu('" + program1.ModuleID + "');}\"> ";
|
|
subModule += " <a href='#' data-i18n=common." + program1.ModuleID + "></a>" + sub2Module + "</li>";
|
|
}//功能清單中我的工作下層的標題
|
|
}
|
|
});
|
|
subModule += '</ul>';
|
|
|
|
if (program.FilePath === '#') {
|
|
Listli += " <br class='clear'><div class='map-menu-list'><li id=\"" + program.ModuleID + "\" class='layer-one folderType' > ";
|
|
Listli += " <a data-i18n=common." + program.ModuleID + "></a>" + subModule + "</li></div>";
|
|
}//功能清單中我的工作及系統管理的轉換
|
|
else {
|
|
Listli += " <br class='clear'><div class='map-menu-list'><li id=\"" + program.ModuleID + "\" class='layer-one ProgramType' onclick=\"if('" + program.FilePath + "'!='#') parent.openPageTab('" + program.ModuleID + "');if('" + program.FilePath + "'=='#'){setTreeMenu('" + program.ModuleID + "');}\"> ";
|
|
Listli += " <a href='#' data-i18n=common." + program.ModuleID + "></a>" + subModule + "</li></div>";
|
|
}//進出口頁面父層
|
|
}
|
|
});
|
|
Menuli += '</ul>';
|
|
Listli += '</ul>';
|
|
|
|
sectionData[0] = Menuli;
|
|
sectionData[1] = Listli;
|
|
return sectionData;
|
|
},
|
|
/**
|
|
* 設定左邊清單點選樣式
|
|
* @param {String} sModid 模組ID
|
|
*/
|
|
setMenuStyle = function (sModid) {
|
|
//先透過foreach迴圈清除所有的onmenu樣式
|
|
$('#sectionMenu ul > li').each(function () {
|
|
$(this).removeClass('onmenu');
|
|
});
|
|
//設定當前點選到的樣式
|
|
$('#sectionMenu').find('#' + sModid).addClass('onmenu');
|
|
},
|
|
/**
|
|
* 模組清單設定
|
|
* @param {String} sModid 模組ID
|
|
*/
|
|
setTreeMenu = function (sModid) {
|
|
var oMenu = getListMenu(sModid);
|
|
$('#sectionMenu').html(oMenu[0]);
|
|
$('#sectionList').html(oMenu[1]).find('.folderType').each(function () {
|
|
var oNext = $(this).next();
|
|
if (oNext.length > 0 && [0].tagName !== 'BR' && oNext[0].className !== 'clear') {
|
|
$(this).after('<br class="clear">');
|
|
}
|
|
});
|
|
|
|
refreshLang();
|
|
};
|
|
|
|
/**
|
|
* 開啟畫面
|
|
* @param {String} programId 當前程式ID
|
|
* @param {String} parameters 參數
|
|
* @param {String} title 當前程式名稱
|
|
* @return {Boolean} 是否停止
|
|
*/
|
|
function openPageTab(programId, parameters, title) {
|
|
var noAuthPrgs = ['NotView', 'Index', 'Test_Calendar'];// ╠common.Index⇒首頁╣
|
|
|
|
if (!g_db.GetDic('programList') && noAuthPrgs.indexOf(programId) === -1) window.location.href = '/Page/Login.html';
|
|
|
|
var sTitle = "", //頁簽標題
|
|
sUrl = "", //網址
|
|
sGrouptag = "default", //頁簽屬性,相同屬性者共用同一個頁簽
|
|
sOperation = "",
|
|
sTabTemplate = "<li aria-controls='#{controls}' id='li_" + programId + "'><a href='#{href}' role='tab' data-toggle='tab' aria-expanded='true' id='#{id}'><i class='fa fa-times-circle' aria-hidden='true'></i><span data-i18n='{i18nkey}'></span><i class='fa fa-refresh' aria-hidden='true'></i></a></li>", //頁簽預設內容
|
|
sPara = parameters === undefined ? '' : parameters;
|
|
|
|
//抓取各頁面的相關參數
|
|
switch (programId) {
|
|
case "Calendar_Test"://首頁
|
|
case "Index"://首頁
|
|
case "Profile"://個人主頁
|
|
case "NotView"://沒有檢視權限
|
|
if (programId !== 'Profile') {
|
|
sTabTemplate = "<li aria-controls='#{controls}' id='li_" + programId + "'><a href='#{href}' data-i18n='{i18nkey}' role='tab' data-toggle='tab' aria-expanded='true' id='#{id}'></a> </li>"; //沒有刪除和刷新的頁簽
|
|
}
|
|
sUrl = '/Page/' + programId + '.html';
|
|
sTitle = programId === 'NotView' ? 'Index' : 'common.' + programId;
|
|
sGrouptag = programId;
|
|
sPara = ''; //清空參數,因為sUrl已經帶參數了
|
|
break;
|
|
|
|
default:
|
|
|
|
var saProgramList = g_db.GetDic('programList') || [],
|
|
oProgram = {},
|
|
saCorrects = Enumerable.From(saProgramList).Where(function (item) { return item.ModuleID === programId; }).ToArray();
|
|
if (saCorrects.length > 0) {
|
|
oProgram = saCorrects[0];
|
|
}
|
|
|
|
sOperation = oProgram.ModuleID;
|
|
sTitle = title === undefined ? "common." + oProgram.ModuleID : title;
|
|
sUrl = oProgram.FilePath; //頁簽
|
|
sGrouptag = oProgram.grouptag !== '' ? oProgram.grouptag : sGrouptag;
|
|
break;
|
|
}
|
|
|
|
if (!sUrl) {
|
|
showMsg(i18next.t("message.Permissions")); // ╠message.Permissions⇒您沒有檢視權限,請聯繫系統管理員╣
|
|
return false;
|
|
}
|
|
|
|
if (programId.indexOf('ngn_') > -1) {
|
|
var link = document.createElement('a');
|
|
link.target = '_blank';
|
|
link.href = sUrl;
|
|
link.click();
|
|
return false;
|
|
}
|
|
|
|
var tabs = $("#tabs").tabs();
|
|
|
|
var id = "tabs-" + sGrouptag; //導航Id(程式Id)
|
|
var li = sTabTemplate.replaceAll('#{href}', "#" + id).replaceAll('#{id}', sGrouptag).replaceAll('{i18nkey}', sTitle).replaceAll('#{controls}', id);
|
|
|
|
//判斷內容IFrame是否存在,如果不存在就添加
|
|
if (window.ShowMode === 'M') {
|
|
if ($("li[aria-controls=" + id + ']').length === 0) {
|
|
$("#tabsList").append(li); //添加頁簽導航部分
|
|
}
|
|
else {
|
|
var licontrols = $("li[aria-controls=" + id + ']');
|
|
licontrols.attr({ 'id': 'li_' + programId });
|
|
licontrols.find('a span').attr('data-i18n', 'common.' + programId);
|
|
}
|
|
}
|
|
else {
|
|
$("#tabsList").find('li').slice(1).remove(); //如果是單頁簽模式則移除前頁簽
|
|
if ($("li[aria-controls=" + id + ']').length === 0) {
|
|
$("#tabsList").append(li); //添加頁簽導航部分
|
|
}
|
|
}
|
|
|
|
if (tabs.find('#' + id).length === 0) {
|
|
var sContentHtml = '<iframe src="' + sUrl + sPara + '" style="width:100%;" onload="javascript:fnframesize(this.id);" id="iframe' + id + '" name="' + (sOperation || "Index") + '" class="tabiframe" frameborder="0" border="0" cellspacing="0" allowtransparency="true" scrolling="yes" />'; //新頁簽的內容部分
|
|
tabs.append("<div id='" + id + "' class='tab-pane fade'>" + sContentHtml + "</div>"); //添加頁簽內容部分
|
|
}
|
|
|
|
$('#iframe' + id).attr({ "src": sUrl + sPara, 'name': sOperation });
|
|
|
|
tabs.tabs("refresh"); //強迫刷新頁面
|
|
//取得目前的頁簽位置
|
|
|
|
var iIndex = $("#tabsList").find('li').length === 0 ? 0 : $("#tabsList").find('li').length - 1;
|
|
SetCuryLiShow(iIndex);
|
|
|
|
$("#tabsList").find('#' + sGrouptag).click(); //最後再點選一次,確定在畫面裡面
|
|
|
|
//Alt+Backspace鍵,刪除頁簽
|
|
tabs.bind("keyup", function (event) {
|
|
if (event.altKey && event.keyCode === $.ui.keyCode.BACKSPACE) {
|
|
var PrevLi = tabs.find(".ui-tabs-active").prev().find('a'),
|
|
LiId = tabs.find(".ui-tabs-active").remove().attr("aria-controls"),
|
|
sPrgid = tabs.find(".ui-tabs-active")[0].id;
|
|
$("#" + LiId).remove();
|
|
PrevLi.click();
|
|
if (sPrgid.indexOf('_Upd') > -1) {//移除當前操作的程式
|
|
msgs.server.removeEditPrg(sPrgid);
|
|
}
|
|
if (sPrgid.indexOf('_View') > -1) {//移除當前操作的程式
|
|
msgs.server.removeEditPrg(sPrgid);
|
|
}
|
|
}
|
|
});
|
|
|
|
//刪除頁簽
|
|
tabs.find(".fa-times-circle").unbind('click').click(function () {
|
|
var PrevLi = $(this).closest("li").prev().find('a'),
|
|
LiId = $(this).closest("li").remove().attr("aria-controls"),
|
|
sPrgid = $(this).closest("li")[0].id;
|
|
$("#" + LiId).remove();
|
|
PrevLi.click();
|
|
if (sPrgid.indexOf('_Upd') > -1) {//移除當前操作的程式
|
|
msgs.server.removeEditPrg(sPrgid.replace('li_', ''));
|
|
}
|
|
if (sPrgid.indexOf('_View') > -1) {//移除當前操作的程式
|
|
msgs.server.removeEditPrg(sPrgid.replace('li_', ''));
|
|
}
|
|
});
|
|
//重新整理頁簽
|
|
tabs.find('.fa-refresh').unbind('click').click(function () {
|
|
var LiId = $(this).closest('li').attr("aria-controls"); //找到頁面ID(請搜尋<li><a href='#{href}' id='#{id}'>)
|
|
var getUrl = $('#iframe' + LiId).attr('src'); //取得目前的連結(src)
|
|
$("#iframe" + LiId).attr('src', getUrl); //重新載入連結,不等於清除功能
|
|
});
|
|
|
|
setContentHeight();
|
|
transLang($('#tabsList'));
|
|
}
|
|
|
|
function setCurryIndex(intAdd) {
|
|
var intCurryIndex = iCuryIndex;
|
|
intCurryIndex = intCurryIndex + intAdd;
|
|
if (intCurryIndex < 0) {
|
|
intCurryIndex = 0;
|
|
}
|
|
if (intCurryIndex >= $("#tabsList").find("li").length - 2) {
|
|
intCurryIndex = $("#tabsList").find("li").length - 2;
|
|
}
|
|
iCuryIndex = intCurryIndex;
|
|
GetLiWidth();
|
|
}
|
|
function GetLiWidth() {
|
|
$("#tabsList").find("li").each(function (n) {
|
|
if (n <= iCuryIndex && n !== 0 && n !== $("#tabsList").find("li").length - 1) {
|
|
$(this).hide();
|
|
$("#divPrevNext").show();
|
|
} else {
|
|
$(this).show();
|
|
}
|
|
});
|
|
$('#tabsList').css('width', $('#tabpanel')[0].offsetWidth - 130 + 'px');
|
|
}
|
|
function reSetLi(index, width) {
|
|
this.index = index;
|
|
this.width = width;
|
|
return this;
|
|
}
|
|
function SetCuryLiShow(intLeftCount) {
|
|
var aryWidth = new Array();
|
|
$("#tabsList").find("li").each(function (n) {
|
|
var li = new reSetLi(n, this.offsetWidth);
|
|
aryWidth.push(li);
|
|
});
|
|
|
|
var windowsize = $(window).width() - 100; //屏幕分辨率
|
|
if (navigator.userAgent.match(/mobile/i)) {
|
|
windowsize = screen.width - 40;
|
|
}
|
|
var _itemwidth = 0;
|
|
var intStartIndex = 0;
|
|
var intEndIndex = intLeftCount;
|
|
for (var i = intLeftCount; i >= 0; i--) {
|
|
_itemwidth += aryWidth[i].width * 1;
|
|
if (_itemwidth > windowsize) {
|
|
intStartIndex = i + 1;
|
|
setCurryIndex(1);
|
|
break;
|
|
}
|
|
}
|
|
|
|
$("#tabsList").find("li").each(function (n) {
|
|
if (n >= intStartIndex) {
|
|
$(this).show();
|
|
if (n > intEndIndex) {
|
|
$("#divPrevNext").show();
|
|
}
|
|
} else {
|
|
if (n !== 0 && n !== $("#tabsList").find("li").length - 1) {
|
|
$(this).hide();
|
|
$("#divPrevNext").show();
|
|
}
|
|
}
|
|
});
|
|
iCuryIndex = intStartIndex;
|
|
}
|
|
|
|
/**
|
|
* 消息組件初始化
|
|
*/
|
|
function MsgApp() {
|
|
var init = function () {
|
|
//$.connection.hub.url = gServerUrl + '/signalr';
|
|
var connection = $.connection.hub;
|
|
msgs = $.connection.msgHub;
|
|
|
|
connection.logging = true;
|
|
|
|
fnFeed();
|
|
|
|
//hub连接开启
|
|
connection.start().done(function () {
|
|
fnRegister(true);
|
|
if (window.Outklook) {
|
|
//if (!window.OutklookSync) {
|
|
// $('.outlook-waiting').slideDown();
|
|
// outlookAPI(outlook.SynChronous, { flag: "auto" },
|
|
// function (res) {
|
|
// if (res === '1') {
|
|
// window.OutklookSync += 1;
|
|
// g_db.SetItem('outklooksync', window.OutklookSync);
|
|
// }
|
|
// });
|
|
//}
|
|
}
|
|
else {
|
|
//if (!window.OutlookTips) {
|
|
// setTimeout(function () {
|
|
// // ╠common.OutlookTips⇒當前未同步登入Outlook,操作行事曆可能不會同步或更新╣
|
|
// // ╠common.ReLoad⇒重新登入╣
|
|
// // ╠common.Close⇒關閉╣
|
|
// // ╠common.Or⇒或╣
|
|
// $('.outlook-waiting').html(
|
|
// [
|
|
// i18next.t('common.Tips'),
|
|
// ':',
|
|
// i18next.t('common.OutlookTips'),
|
|
// ' ',
|
|
// $('<a/>', {
|
|
// text: i18next.t('common.ReLoad'),
|
|
// class: 'link',
|
|
// click: function () {
|
|
// $('.log-out').trigger('click');
|
|
// }
|
|
// }),
|
|
// i18next.t('common.Or'),
|
|
// $('<a/>', {
|
|
// text: i18next.t('common.Close'),
|
|
// class: 'link',
|
|
// click: function () {
|
|
// $('.outlook-waiting').slideUp();
|
|
// window.OutlookTips += 1;
|
|
// g_db.SetItem('outlooktips', window.OutlookTips);
|
|
// }
|
|
// })
|
|
// ]).css({ 'font-size': '15px', 'padding-top': '5px', 'color': '#ff0000' }).slideDown();
|
|
// }, 3660);
|
|
//}
|
|
}
|
|
})
|
|
.fail(function () {
|
|
console.log("Could not Connect!");
|
|
});
|
|
|
|
connection.connectionSlow(function () {
|
|
//console.log("connectionSlow");
|
|
});
|
|
|
|
connection.disconnected(function () {
|
|
setTimeout(function () {//掉線後10秒內自動重新連線
|
|
connection.start().done(function () {
|
|
fnRegister(false);
|
|
});
|
|
}, 1000);
|
|
});
|
|
|
|
connection.error(function (error) {
|
|
//console.log(error);
|
|
});
|
|
|
|
connection.reconnected(function () {
|
|
//console.log("reconnected");
|
|
});
|
|
|
|
connection.reconnecting(function () {
|
|
//console.log("reconnecting");
|
|
});
|
|
|
|
connection.starting(function () {
|
|
//console.log("starting");
|
|
});
|
|
connection.stateChanged(function (state) {
|
|
//console.log(state);
|
|
});
|
|
};
|
|
|
|
init();
|
|
}
|
|
|
|
function fnFeed() {
|
|
var init = function () {
|
|
//后端登陸註冊调用后,产生的loginUser回调
|
|
msgs.client.onConnected = function (connnectId, userName, onlineUsers) {
|
|
//console.log(JSON.stringify(onlineUsers));
|
|
online_Users = onlineUsers;
|
|
|
|
if ($('#iframetabs-Profile').length > 0) {
|
|
$('#iframetabs-Profile')[0].contentWindow.fnSetUserOnline();
|
|
}
|
|
};
|
|
|
|
//后端断线时调用调用后,产生的loginUser回调
|
|
msgs.client.onUserDisconnected = function (connnectId, onlineUsers, orgId, userId, userName, isLogin, tips) {
|
|
online_Users = onlineUsers;
|
|
if ($('#iframetabs-Profile').length > 0) {
|
|
$('#iframetabs-Profile')[0].contentWindow.fnSetUserOnline();
|
|
}
|
|
if (isLogin && userId === UserInfo.MemberID) {
|
|
// ╠message.VerifyOutTips⇒您的帳號已在別處登入╣ ╠common.Tips⇒提示╣
|
|
layer.alert(i18next.t("message.VerifyOutTips") + '<br>' + tips, { icon: 0, closeBtn: 0, title: i18next.t("common.Tips") }, function (index) {
|
|
window.top.location.href = '/Page/Login.html';
|
|
});
|
|
}
|
|
};
|
|
|
|
//推送公告
|
|
msgs.client.broadcast = function (msg) {
|
|
fnGetAnnouncements();
|
|
};
|
|
//推送是否可編輯結果(true or false)
|
|
msgs.client.checkedit = function (isedit, prgid, username) {
|
|
if (!isedit) {
|
|
var oCurrentFn = $('iframe[name=' + prgid + ']');
|
|
//oCurrentFn.contents().ready
|
|
// ╠message.NotToEdit⇒當前資料正在編輯,稍後請刷新頁面再繼續操作╣ ╠common.Operator⇒操作人╣
|
|
oCurrentFn[0].contentWindow.showTips(i18next.t("message.NotToEdit") + ',' + i18next.t("common.Operator") + ':' + username);
|
|
|
|
parent.bLockDataForm0430 = false;
|
|
|
|
var CheckTablelistType = oCurrentFn.contents().find('[role=\'tablist\']').length > 0;
|
|
//tab-content: 多個子頁籤(例如進口編輯)
|
|
if (CheckTablelistType) {
|
|
oCurrentFn.contents().find(".tab-content").css('pointer-events', 'none');
|
|
}
|
|
//panel-body: 只有一個頁面(例如部門資料編輯)
|
|
else {
|
|
oCurrentFn.contents().find(".panel-body").css('pointer-events', 'none');
|
|
}
|
|
|
|
//toolbar
|
|
oCurrentFn.contents().find('#Toolbar button').not('#Toolbar_Leave').attr('disabled', true);
|
|
|
|
}
|
|
};
|
|
//更新提示
|
|
msgs.client.pushtips = function (msg) {
|
|
fnGetTips();
|
|
};
|
|
//推送系統消息
|
|
msgs.client.pushmsgs = function (msg) {
|
|
};
|
|
//檢核文字檔小助手是否安裝
|
|
msgs.client.existtrasfer = function (msg, bInstall) {
|
|
if (bInstall) {
|
|
var sPrgId = '';
|
|
switch (msg) {
|
|
case 'IM':
|
|
sPrgId = 'ExhibitionImport';
|
|
break;
|
|
case 'EX':
|
|
sPrgId = 'ExhibitionExport';
|
|
break;
|
|
}
|
|
$('#iframetabs-' + sPrgId)[0].contentWindow.fnToAccountAudit();
|
|
}
|
|
else {
|
|
layer.msg(i18next.t("message.Financial_InstallTransfer")); // ╠message.Financial_InstallTransfer⇒請先安裝文字檔小助手╣
|
|
}
|
|
};
|
|
//提示安裝並運行文字檔小助手
|
|
msgs.client.transfertips = function (connectionid) {
|
|
layer.msg(i18next.t("message.Financial_InstallTransfer")); // ╠message.Financial_InstallTransfer⇒請先安裝文字檔小助手╣
|
|
};
|
|
//test
|
|
msgs.client.hello = function (msg) {
|
|
//debugger;
|
|
};
|
|
|
|
// msgs.server.offline();
|
|
|
|
//推送消息
|
|
msgs.client.message = function (data) {
|
|
switch (data.Type) {
|
|
case 0:
|
|
|
|
break;
|
|
case 1:
|
|
|
|
break;
|
|
case 2:
|
|
|
|
break;
|
|
case 3:
|
|
|
|
break;
|
|
case 4:
|
|
|
|
break;
|
|
case 5:
|
|
|
|
break;
|
|
case 6:
|
|
|
|
break;
|
|
case 7:
|
|
|
|
break;
|
|
case 'OutlookSynChronous':
|
|
{
|
|
if (data.Flag === 'auto') {
|
|
//if (data.Message === UserInfo.OutlookAccount) {
|
|
// var elSuccess = $('.outlook-waiting');
|
|
// elSuccess.find('span').text(i18next.t("message.SynchronousSuccess")).css({ 'color': 'green' });
|
|
// elSuccess.find('img').attr('src', '../images/Success.png');
|
|
// setTimeout(function () {
|
|
// elSuccess.slideUp();
|
|
// }, 2500);
|
|
//}
|
|
}
|
|
else if (data.Flag === 'once') {
|
|
var iframe_Calendar = $('#iframetabs-Calendar');
|
|
if (iframe_Calendar.length > 0) {
|
|
iframe_Calendar[0].contentWindow.closeTips(data.Memo);
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
};
|
|
|
|
//接收消息
|
|
msgs.client.receive = function (data) {
|
|
switch (data.Type) {
|
|
case 1://發送給自己
|
|
break;
|
|
case 2://發送給連線人員
|
|
|
|
break;
|
|
case 3://發送給制定人員ID
|
|
{
|
|
switch (data.Memo) {
|
|
case 'tips'://系統所有待辦定時提醒
|
|
fnShowTips(data.Content);
|
|
break;
|
|
case 'attendance'://EIP考勤提醒
|
|
fnAttendanceTips(data.Content);
|
|
break;
|
|
}
|
|
}
|
|
break;
|
|
case 4://發送給制定多個人員ID
|
|
|
|
break;
|
|
case 5://發送給制定群組
|
|
|
|
break;
|
|
}
|
|
};
|
|
};
|
|
|
|
init();
|
|
}
|
|
|
|
$(function () {
|
|
'use strict';
|
|
|
|
var
|
|
/**
|
|
* 設定系統時間
|
|
*/
|
|
Refresh = function () {
|
|
var Nowtime = new Date().formate("HH:mm:ss");
|
|
ltrdate.innerHTML = new Date().formate("yyyy.MM.dd (EEE)");
|
|
ltrtime.innerHTML = Nowtime;
|
|
setTimeout(Refresh, 1000);
|
|
},
|
|
/**
|
|
* 特殊處理,由於階層的關係需要去判斷border-right的顯示,下noborder代表不下樣式
|
|
*/
|
|
setTreeViewCss = function () {
|
|
$("#sectionList li:not('.layer-one')").each(function () {
|
|
if ($(this).hasClass('folderType')) { //如果該li的class為folderType,在上上層的li加上 class noborder, 加在上上層的原因為folderType的li前面都會加上<br class="clear">的中斷點
|
|
$(this).prev().prev().addClass('noborder');
|
|
}
|
|
});
|
|
},
|
|
/**
|
|
* 設定頁簽顯示方式
|
|
*/
|
|
setShowMode = function () {
|
|
if (window.ShowMode === "M") { //判斷當前是否開啟多頁簽
|
|
window.ShowMode = "S";
|
|
$("#divPrevNext,#tabpanel").hide();
|
|
} else {
|
|
window.ShowMode = "M";
|
|
$("#divPrevNext,#tabpanel").show();
|
|
}
|
|
|
|
CallAjax(ComFn.W_Com, ComFn.GetUpd, {
|
|
Params: {
|
|
members: {
|
|
values: { SysShowMode: window.ShowMode },
|
|
keys: {
|
|
MemberID: window.UserID,
|
|
OrgID: window.OrgID
|
|
}
|
|
}
|
|
}
|
|
}, function (res) {
|
|
if (res.d > 0) {
|
|
showMsg(i18next.t("message.SetTab_Successed"), 'success'); // ╠message.Delete_Success⇒設定頁簽模式成功╣
|
|
}
|
|
else {
|
|
showMsg(i18next.t("message.SetTab_Failed"), 'error'); // ╠message.SetTab_Failed⇒設定頁簽模式失敗╣
|
|
}
|
|
});
|
|
},
|
|
/**
|
|
* 更改語系國別
|
|
* @param {String} lang 當前語言
|
|
*/
|
|
fnUpdCountry = function (lang) {
|
|
CallAjax(ComFn.W_Com, ComFn.GetUpd, {
|
|
Params: {
|
|
members: {
|
|
values: { Country: lang },
|
|
keys: {
|
|
MemberID: window.UserID,
|
|
OrgID: window.OrgID
|
|
}
|
|
}
|
|
}
|
|
}, function (res) { });
|
|
},
|
|
/**
|
|
* 獲取組織資料
|
|
* @return {Function} ajax物件
|
|
*/
|
|
fnGetOrgData = function () {
|
|
return CallAjax(ComFn.W_Com, ComFn.GetOne, {
|
|
Type: '',
|
|
Params: {
|
|
organization: {
|
|
OrgID: window.OrgID
|
|
}
|
|
}
|
|
}).done(function (res) {
|
|
if (res.d) {
|
|
var oOrg = $.parseJSON(res.d);
|
|
window.OrgInfo = oOrg;
|
|
//$('title').text(OrgInfo.SystemCName);
|
|
//$('.logo-min').attr('src', '/Controller.ashx?action=getimg&folder=Organization&id=' + oOrg.LoGoId + '&orgid=' + oOrg.OrgID + '×=' + $.now());
|
|
}
|
|
});
|
|
},
|
|
/**
|
|
* 獲取個人資料
|
|
* @return {Function} ajax物件
|
|
*/
|
|
fnGetPersonalData = function () {
|
|
return $.whenArray([
|
|
g_api.ConnectLite('Authorize', 'GetUserInfo'),
|
|
g_api.ConnectLite(Service.com, ComFn.GetSysSet)])
|
|
.done(function (res1, res2) {
|
|
window.UserInfo = {};
|
|
window.SysSet = {};
|
|
if (res1[0].RESULT > 0) {
|
|
var oUser = res1[0].DATA.rel;
|
|
//$('#userName').text(oUser.MemberName);
|
|
$('<span>', { text: oUser.MemberName }).prependTo("#spUser");
|
|
window.UserInfo = oUser;
|
|
UserInfo.OrgID = window.OrgID;
|
|
UserInfo.roles = UserInfo.roles || '';
|
|
var sMemberPic = $.trim(UserInfo.MemberPic);
|
|
UserInfo.MemberPic = sMemberPic === '' ? guid() : sMemberPic;
|
|
fnSetArgDrop([
|
|
{
|
|
ArgClassID: 'LanCountry',
|
|
Select: $('#countrychange'),
|
|
ShowId: true,
|
|
DefultVal: UserInfo.Country,
|
|
CallBack: function () {
|
|
$('#countrychange')[0].remove(0);// 移除下拉選單第一個選項
|
|
}
|
|
}
|
|
]);
|
|
fnGetAnnouncements();
|
|
var msgApp = new MsgApp();
|
|
}
|
|
if (res2[0].RESULT > 0) {
|
|
var saList = res2[0].DATA.rel;
|
|
$.each(saList, function (i, oSet) {
|
|
window.SysSet[oSet.SettingItem] = oSet.SettingValue;
|
|
});
|
|
window.SysSet.GridRecords = window.SysSet.GridRecords || 10;
|
|
window.SysSet.GridPages = window.SysSet.GridPages || 15;
|
|
window.SysSet.CustomersAuditUsers = window.SysSet.CustomersAuditUsers || '';
|
|
window.SysSet.BillAuditor = window.SysSet.BillAuditor || '';
|
|
window.SysSet.TaxRate = window.SysSet.TaxRate || '0';
|
|
window.SysSet.IsOpenMail = window.SysSet.IsOpenMail || 'N';
|
|
window.SysSet.CDDProUsers = window.SysSet.CDDProUsers || '';
|
|
UserInfo.IsManager = UserInfo.roles.indexOf(SysSet.Supervisor) > -1 || UserInfo.roles.indexOf('Manager') > -1;
|
|
}
|
|
fnGetHeadPic();
|
|
});
|
|
},
|
|
/**
|
|
* 獲取程式資料
|
|
* @return {Function} ajax物件
|
|
*/
|
|
fnGetProgramList = function () {
|
|
return g_api.ConnectLite(Service.sys, 'GetSysFNList', {},
|
|
function (res) {
|
|
if (res.RESULT === 0) {
|
|
alert(res.MSG);
|
|
}
|
|
else {
|
|
var sPrgList = res.DATA.rel;
|
|
g_db.SetDic('programList', sPrgList);
|
|
if (sPrgList.length > 0) {
|
|
window.TopModID = sPrgList[0].ModuleID;
|
|
setTreeMenu(TopModID); //產生功能清單
|
|
setTreeViewCss();
|
|
}
|
|
}
|
|
});
|
|
},
|
|
/**
|
|
* 獲取頭像
|
|
* @return {Function} ajax物件
|
|
*/
|
|
fnGetHeadPic = function () {
|
|
var callback = function (files) {
|
|
UserInfo.Filelist = files;
|
|
$('#imgUser').attr('src', '/Controller.ashx?action=getimg&folder=Members&id=' + UserInfo.MemberPic + '&orgid=' + UserInfo.OrgID + '×=' + $.now());
|
|
};
|
|
return fnGetUploadFiles(UserInfo.MemberPic, callback);
|
|
},
|
|
/**
|
|
* 上傳頭像
|
|
* @param {Array} files 當前文件
|
|
* @param {HTMLElement} iframe 父層表單
|
|
*/
|
|
fnUpload = function (files, iframe) {
|
|
var option = {};
|
|
option.input = iframe.find('#fileInput');
|
|
option.limit = 1;
|
|
option.extensions = ['jpg', 'jpeg', 'png', 'bmp', 'gif', 'png'];
|
|
option.theme = 'dragdropbox';
|
|
option.folder = 'Members';
|
|
option.type = 'one';
|
|
option.parentid = UserInfo.MemberPic;
|
|
option.uploadFile = {
|
|
url: '/Controller.ashx?action=upload&source=Members&userid=' + UserInfo.MemberID + '&orgid=' + UserInfo.OrgID + '&parentid=' + UserInfo.MemberPic,
|
|
data: null,
|
|
type: 'POST',
|
|
enctype: 'multipart/form-data',
|
|
beforeSend: function () { },
|
|
success: function (data, el) {
|
|
iframe.find('.jFiler-input-dragDrop').hide();
|
|
var parent = el.find(".jFiler-jProgressBar").parent();
|
|
fnGetHeadPic();
|
|
el.find(".jFiler-jProgressBar").fadeOut("slow", function () {
|
|
$("<div class=\"jFiler-item-others text-success\"><i class=\"icon-jfi-check-circle\"></i> Success</div>").hide().appendTo(parent).fadeIn("slow");
|
|
});
|
|
},
|
|
error: function (el) {
|
|
var parent = el.find(".jFiler-jProgressBar").parent();
|
|
el.find(".jFiler-jProgressBar").fadeOut("slow", function () {
|
|
$("<div class=\"jFiler-item-others text-error\"><i class=\"icon-jfi-minus-circle\"></i> Error</div>").hide().appendTo(parent).fadeIn("slow");
|
|
});
|
|
},
|
|
statusCode: null,
|
|
onProgress: null,
|
|
onComplete: null
|
|
};
|
|
option.uploadFile = {
|
|
url: '/Controller.ashx?action=upload&source=Members&userid=' + UserInfo.MemberID + '&orgid=' + UserInfo.OrgID + '&parentid=' + UserInfo.MemberPic,
|
|
data: null,
|
|
type: 'POST',
|
|
enctype: 'multipart/form-data',
|
|
beforeSend: function () { },
|
|
success: function (data, el) {
|
|
iframe.find('.jFiler-input-dragDrop').hide();
|
|
var parent = el.find(".jFiler-jProgressBar").parent();
|
|
fnGetHeadPic();
|
|
el.find(".jFiler-jProgressBar").fadeOut("slow", function () {
|
|
$("<div class=\"jFiler-item-others text-success\"><i class=\"icon-jfi-check-circle\"></i> Success</div>").hide().appendTo(parent).fadeIn("slow");
|
|
});
|
|
},
|
|
error: function (el) {
|
|
var parent = el.find(".jFiler-jProgressBar").parent();
|
|
el.find(".jFiler-jProgressBar").fadeOut("slow", function () {
|
|
$("<div class=\"jFiler-item-others text-error\"><i class=\"icon-jfi-minus-circle\"></i> Error</div>").hide().appendTo(parent).fadeIn("slow");
|
|
});
|
|
},
|
|
statusCode: null,
|
|
onProgress: null,
|
|
onComplete: null
|
|
};
|
|
option.onRemove = function (itemEl, file) {
|
|
DelFile(UserInfo.MemberPic, 'parent').done(function () {
|
|
iframe.find('.jFiler-input-dragDrop').show();
|
|
fnGetHeadPic();
|
|
});
|
|
};
|
|
if (files) {
|
|
option.files = files;
|
|
}
|
|
fnUploadRegister(option);
|
|
},
|
|
/**
|
|
* 初始化
|
|
*/
|
|
init = function () {
|
|
if (!g_db.SupportLocalStorage()) {
|
|
if (sLang === 'en') {
|
|
alert('The current browser does not support local storage. Please turn off private browsing settings');
|
|
}
|
|
else if (sLang === 'zh') {
|
|
alert('当前浏览器不支持本地储存,请关闭无痕浏览模式');
|
|
}
|
|
else {
|
|
alert('當前瀏覽器不支持本地儲存,請關閉私密瀏覽設定');
|
|
}
|
|
$('body').html('');
|
|
return;
|
|
}
|
|
window.OrgID = g_db.GetItem('orgid');
|
|
window.UserID = g_db.GetItem('userid');
|
|
window.ShowMode = g_db.GetItem('mode');
|
|
window.Outklook = g_db.GetItem('outklook') === 'true';
|
|
window.OutklookSync = parseInt(g_db.GetItem('outklooksync') || 0);
|
|
window.OutlookTips = parseInt(g_db.GetItem('outlooktips') || 0);
|
|
|
|
if (!window.OrgID || !window.UserID) {
|
|
window.location.href = '/Page/Login.html';
|
|
return;
|
|
}
|
|
|
|
fnGetOrgData();
|
|
$.whenArray([
|
|
fnGetPersonalData(),
|
|
fnGetProgramList()
|
|
]).done(function () {
|
|
var saProgramList = g_db.GetDic('programList') || [];
|
|
if (saProgramList.length) {
|
|
setLang(UserInfo.Country, undefined, function () {
|
|
openPageTab('Index', 'Index');
|
|
});
|
|
}
|
|
else {
|
|
openPageTab('NotView', 'NotView');
|
|
return false;
|
|
}
|
|
fnGetAbsenceFromLastWeek();
|
|
});
|
|
fnGetTips();
|
|
|
|
// Slimscroll
|
|
slimScroll();
|
|
Waves.displayEffect();//波浪
|
|
|
|
//$('#divPenlSetting').click(function () {
|
|
// setShowMode();
|
|
//});
|
|
|
|
if (window.ShowMode === "S") { //判斷當前是否開啟多頁簽
|
|
$("#divPrevNext,#tabpanel").hide();
|
|
}
|
|
|
|
$('.stop-prevent').on('click', function (e) {
|
|
return false;
|
|
});
|
|
|
|
///登陸outlook
|
|
//$('.mail-box').on('click', function (e) {
|
|
// if (!UserInfo.OutLookId) {
|
|
// window.location.href = "/Home/Index";
|
|
// return false;
|
|
// }
|
|
//});
|
|
|
|
$('.log-out').on('click', function (e) {
|
|
var fnClear = function () {
|
|
g_db.RemoveItem('orgid');
|
|
g_db.RemoveItem('userid');
|
|
g_db.RemoveItem('loginname');
|
|
g_db.RemoveItem('usertype');
|
|
g_db.RemoveItem('mode');
|
|
g_db.RemoveItem('token');
|
|
g_db.RemoveItem('outklook');
|
|
};
|
|
fnClear();
|
|
if (window.Outklook) {
|
|
window.location.href = "/Login/Index?orgid=&userid=";
|
|
}
|
|
else {
|
|
window.location.href = '/Page/Login.html';
|
|
}
|
|
|
|
// ╠message.ToLogOut⇒是否同時退出Outlook?╣ ╠common.Tips⇒提示╣
|
|
/*layer.confirm(i18next.t("message.ToLogOut"),
|
|
{
|
|
icon: 3,
|
|
title: i18next.t("common.Tips"),
|
|
btn: [i18next.t('common.Yes'), i18next.t('common.No')] // ╠message.Yes⇒是╣ ╠common.No⇒否╣
|
|
},
|
|
function (index) {
|
|
fnClear();
|
|
window.location.href = "/Login/Index?orgid=&userid=";
|
|
layer.close(index);
|
|
},
|
|
function () {
|
|
fnClear();
|
|
window.location.href = '/Page/Login.html';
|
|
}
|
|
);*/
|
|
});
|
|
|
|
///左移
|
|
$("#lbtnPrev").on('click', function () {
|
|
setCurryIndex(-1);
|
|
});
|
|
///右移
|
|
$("#lbtnNext").on('click', function () {
|
|
setCurryIndex(1);
|
|
});
|
|
|
|
/**
|
|
* 行事曆
|
|
*/
|
|
$(".person-list>li>a").on('click', function () {
|
|
var that = this;
|
|
switch (that.id) {
|
|
case 'profile':
|
|
openPageTab('Profile');
|
|
break;
|
|
case 'userinfo':
|
|
var oValidator = null;
|
|
layer.open({
|
|
id: 'memberinfo',
|
|
type: 2,
|
|
title: i18next.t('common.PersonalDataUpdate'),//╠common.PersonalDataUpdate⇒個人資料修改╣
|
|
offset: '100px',//右下角弹出
|
|
shade: 0.75,
|
|
area: ['660px', '600px'],
|
|
content: '/Page/Pop/UpdUserInfo.html', //iframe的url,
|
|
btn: [i18next.t('common.Confirm'), i18next.t('common.Cancel')],//╠common.Confirm⇒確定╣╠common.Cancel⇒取消╣
|
|
success: function (layero, index) {
|
|
var iframe = $('iframe').contents();
|
|
iframe.find('#MemberID').val(UserInfo.MemberID);
|
|
iframe.find('#MemberName').val(UserInfo.MemberName);
|
|
|
|
//自定義驗證屬性
|
|
$.validator.addMethod("notEqualTo", function (value, element, param) {
|
|
if (value === '' && iframe.find(param).val() === '') {
|
|
return true;
|
|
}
|
|
return value !== iframe.find(param).val();
|
|
});
|
|
$.validator.addMethod("EqualToNew", function (value, element, param) {
|
|
if (value === '' && iframe.find(param).val() === '') {
|
|
return true;
|
|
}
|
|
return value === iframe.find(param).val();
|
|
});
|
|
$.validator.addMethod("New_required", function (value, element, param) {
|
|
if (value === '' && iframe.find(param).val() !== '') {
|
|
return false;
|
|
}
|
|
return true;
|
|
});
|
|
|
|
oValidator = iframe.find("#form_UpdUserInfo").validate({ //表單欄位驗證
|
|
rules: {
|
|
OldPsw: { New_required: "#NewPsw" },
|
|
NewPsw: { notEqualTo: "#OldPsw" },
|
|
CheckNewPsw: {
|
|
EqualToNew: "#NewPsw"
|
|
}
|
|
},
|
|
messages: {
|
|
MemberName: i18next.t('UpdUserInfo.MemberName_required'),// ╠UpdUserInfo.MemberName_required⇒請輸入名稱╣
|
|
OldPsw: {
|
|
New_required: i18next.t('UpdUserInfo.OldPsw_required')// ╠UpdUserInfo.OldPsw_required⇒請輸入舊密碼╣
|
|
},
|
|
CalColor: i18next.t('UpdUserInfo.CalColor_required'),// ╠UpdUserInfo.CalColor_required⇒請輸入行事曆顏色╣
|
|
NewPsw: {
|
|
required: i18next.t('UpdUserInfo.NewPsw_required'),// ╠UpdUserInfo.NewPsw_required⇒請輸入新密碼╣
|
|
notEqualTo: i18next.t('UpdUserInfo.NotEqualTo')// ╠UpdUserInfo.NotEqualTo⇒舊密碼與新密碼不可相同╣
|
|
},//舊密碼與新密碼不可相同
|
|
CheckNewPsw: {
|
|
required: i18next.t('UpdUserInfo.CheckNewPsw_required'),// ╠UpdUserInfo.CheckNewPsw_required⇒再次輸入新密碼╣
|
|
EqualToNew: i18next.t('UpdUserInfo.EqualTo') // ╠UpdUserInfo.EqualTo⇒兩次密碼輸入不相符╣
|
|
}
|
|
}
|
|
});
|
|
fnUpload(UserInfo.Filelist, iframe);
|
|
if (UserInfo.Filelist.length > 0) {
|
|
iframe.find('.jFiler-input-dragDrop').hide();
|
|
}
|
|
transLang(iframe.find('#form_UpdUserInfo'));
|
|
},
|
|
yes: function (index, layero) {
|
|
var iframe = $('iframe').contents();
|
|
if (!iframe.find("#form_UpdUserInfo").valid()) {
|
|
oValidator.focusInvalid();
|
|
return false;
|
|
}
|
|
var data = {
|
|
UserName: iframe.find('#MemberName').val(),
|
|
OldPsw: iframe.find('#OldPsw').val(),
|
|
NewPsw: iframe.find('#NewPsw').val(),
|
|
CalColor: iframe.find('#CalColor').val(),
|
|
MemberPic: UserInfo.MemberPic
|
|
};
|
|
g_api.ConnectLite(Service.auth, 'UpdataPsw', data, function (res) {
|
|
if (res.RESULT) {
|
|
UserInfo.CalColor = data.CalColor;
|
|
showMsg(i18next.t("message.Modify_Success"), 'success'); //╠message.Modify_Success⇒修改成功╣
|
|
layer.close(index);
|
|
}
|
|
else {
|
|
if (res.MSG === "1") {
|
|
showMsg(i18next.t("message.CheckOldPassword"), 'error');// ╠message.CheckOldPassword⇒舊密碼驗證失敗╣
|
|
}
|
|
else if (res.MSG === "2") {
|
|
showMsg(i18next.t("message.Modify_Failed"), 'error');//╠message.Modify_Failed⇒修改失敗╣
|
|
}
|
|
else {
|
|
showMsg(i18next.t("message.Modify_Failed") + '<br>' + res.MSG, 'error'); //╠message.Modify_Failed⇒修改失敗╣
|
|
}
|
|
}
|
|
}, function () {
|
|
showMsg(i18next.t("message.Modify_Failed"), 'error');//╠message.Modify_Failed⇒修改失敗╣
|
|
});
|
|
}
|
|
});
|
|
break;
|
|
case 'calendar':
|
|
openPageTab('Calendar');
|
|
break;
|
|
}
|
|
});
|
|
|
|
/**
|
|
* 語系國別設定
|
|
*/
|
|
$('#countrychange').on('change', function () {
|
|
$('#setlistset').click();
|
|
|
|
var sLang = $(this).val();
|
|
fnUpdCountry(sLang);
|
|
setLang(sLang);
|
|
|
|
$('#tabsList>li').each(function () {
|
|
var sId = $(this).attr('aria-controls'),
|
|
iframe = $('#' + sId).find('iframe').contents();
|
|
setLang(sLang, iframe);
|
|
});
|
|
});
|
|
|
|
setTimeout(Refresh, 1000);
|
|
//closeWaiting(3000); //最長3秒鐘停止等待
|
|
|
|
//var sFileName = "John_Test",
|
|
// sInputPath = "C:\Users\Alina\Desktop\Temple\OfficeToPDF\Demo\土地建物分離估價適用版.xlsx";
|
|
//g_api.ConnectLite('Pdf', 'ExcelToPdf', {
|
|
// InputPath: sInputPath,
|
|
// FileName: sFileName
|
|
//}, function (res) {
|
|
// if (res.RESULT) {
|
|
// DownLoadFile(res.DATA.rel, sFileName);
|
|
// }
|
|
// else {
|
|
// showMsg(res.MSG, 'error');
|
|
// }
|
|
//});
|
|
|
|
//debugger;
|
|
|
|
|
|
};
|
|
|
|
init();
|
|
});
|