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.
807 lines
40 KiB
807 lines
40 KiB
'use strict';
|
|
var sProgramId = getProgramId(),
|
|
isAdmin = parent.UserInfo.roles.toLowerCase().indexOf('admin') > -1,
|
|
AddedTip = false,
|
|
oCalendar = null,
|
|
fnPageInit = function() {
|
|
var saCalType = [],
|
|
saOpenMent = ['P', 'G', 'D', 'C'],
|
|
/**
|
|
* 表單驗證
|
|
* @param {Object}iframe form表單
|
|
*/
|
|
fnValidate = function(iframe) {
|
|
iframe.find('[name=OpenMent]').click(function() {
|
|
var sVal = this.value;
|
|
if (sVal === 'G') {
|
|
iframe.find('#trGroupMembers').show();
|
|
} else {
|
|
iframe.find('#trGroupMembers').hide();
|
|
iframe.find('#GroupMembers').val('').data('value', '');
|
|
}
|
|
});
|
|
$.validator.addMethod("compardatetime", function(value, element, parms) {
|
|
if (new Date(value) <= new Date(iframe.find('#StartDate').val())) {
|
|
return false;
|
|
}
|
|
return true;
|
|
});
|
|
$.validator.addMethod("groupmember", function(value, element, parms) {
|
|
if (iframe.find('[name=OpenMent]:checked').val() === 'G' && !$(element).data('value')) {
|
|
return false;
|
|
}
|
|
return true;
|
|
});
|
|
return iframe.find("#form_calendar").validate({
|
|
showErrors: function() {
|
|
this.defaultShowErrors();
|
|
transLang(iframe);
|
|
}
|
|
}); // //表單欄位驗證
|
|
},
|
|
/**
|
|
* 修改資料
|
|
* @param {Object} event 事件
|
|
* @param {Object} newevent 最新的事件
|
|
*/
|
|
fnUpdData = function(event, newevent) {
|
|
CallAjax(ComFn.W_Com, ComFn.GetUpd, {
|
|
Params: {
|
|
calendar: {
|
|
values: newevent,
|
|
keys: { NO: event.id }
|
|
}
|
|
}
|
|
}, function(res) {
|
|
if (res.d > 0) {
|
|
showMsg(i18next.t("message.Modify_Success"), 'success'); //╠message.Modify_Success⇒修改成功╣
|
|
} else {
|
|
showMsg(i18next.t("message.Modify_Failed"), 'error'); //╠message.Modify_Failed⇒修改失敗╣
|
|
}
|
|
|
|
oCalendar.fullCalendar('refetchEvents');
|
|
if (parent.Outklook) {
|
|
outlookAPI(outlook.Calendar_Upd, { NO: event.id })
|
|
}
|
|
}, function() {
|
|
showMsg(i18next.t("message.Modify_Failed"), 'error'); //╠message.Modify_Failed⇒修改失敗╣
|
|
});
|
|
},
|
|
/**
|
|
* pop視窗
|
|
* @param {Object} iframe 表單
|
|
*/
|
|
fnRegisterEvent = function(iframe, action) {
|
|
iframe.find('.add-on').click(function() {
|
|
fnGetSetUserGroups({
|
|
Action: action,
|
|
Callback: function(data) {
|
|
if (data.length > 0) {
|
|
var saId = [],
|
|
saName = [];
|
|
$.each(data, function(idx, item) {
|
|
saId.push(item.UserID);
|
|
saName.push(item.UserName);
|
|
});
|
|
iframe.find('#GroupMembers').data('value', saId.join(',')).val(saName.join(','));
|
|
}
|
|
}
|
|
});
|
|
});
|
|
},
|
|
/**
|
|
* pop資料新增
|
|
* @param {Object} start 開始時間
|
|
* @param {Object} end 結束時間
|
|
*/
|
|
fnAdd = function(start, end) {
|
|
var oValidator = null;
|
|
layer.open({
|
|
type: 2,
|
|
title: '新增行程',
|
|
shade: 0.75,
|
|
maxmin: true, //开启最大化最小化按钮
|
|
area: ['800px', '580px'],
|
|
content: '/Page/Pop/CalanderPop.html',
|
|
success: function(layero, index) {
|
|
var iframe = $('iframe').contents();
|
|
fnSetArgDrop([{
|
|
ArgClassID: 'CalType',
|
|
Select: iframe.find('#CalType'),
|
|
ShowId: true,
|
|
CallBack: function(data) {
|
|
var bAllDay = true;
|
|
iframe.find('#CurrentDate').val(start);
|
|
iframe.find('#AllDay')[0].checked = bAllDay = typeof start._i === 'string';
|
|
iframe.find('#StartDate').val(bAllDay ? start._d.formate('yyyy/MM/dd 00:00') : newDate(start));
|
|
iframe.find('#EndDate').val(bAllDay ? end._d.formate('yyyy/MM/dd 00:00') : newDate(end));
|
|
oValidator = fnValidate(iframe);
|
|
fnRegisterEvent(iframe, 'add');
|
|
}
|
|
}]);
|
|
},
|
|
btn: [i18next.t('common.Confirm'), i18next.t('common.Cancel')], //╠common.Confirm⇒確定╣╠common.Cancel⇒取消╣
|
|
yes: function(index, layero) {
|
|
var iframe = $('iframe').contents();
|
|
iframe.find('#GroupMembers').removeAttr('readonly');
|
|
if (!iframe.find("#form_calendar").valid()) {
|
|
oValidator.focusInvalid();
|
|
iframe.find('#GroupMembers').attr('readonly', 'readonly');
|
|
return false;
|
|
}
|
|
|
|
var data = getFormSerialize(iframe.find('#form_calendar'));
|
|
data = packParams(data);
|
|
data.OrgID = parent.OrgID;
|
|
data.UserID = parent.UserID;
|
|
data.Color = parent.UserInfo.CalColor;
|
|
data.AllDay = data.AllDay || '0';
|
|
|
|
g_api.ConnectLite(sProgramId, ComFn.GetAdd, data,
|
|
function(res) {
|
|
if (res.RESULT) {
|
|
var sNo = res.DATA.rel;
|
|
showMsg(i18next.t("message.Save_Success"), 'success'); // ╠message.Save_Success⇒新增成功╣
|
|
oCalendar.fullCalendar('refetchEvents');
|
|
if (parent.Outklook) {
|
|
outlookAPI(outlook.Calendar_Add, {
|
|
NO: sNo,
|
|
ResponseRequested: true
|
|
});
|
|
}
|
|
} else {
|
|
showMsg(i18next.t("message.Save_Failed"), 'error'); // ╠message.Save_Failed⇒新增失敗╣
|
|
}
|
|
});
|
|
layer.close(index);
|
|
}
|
|
});
|
|
},
|
|
/**
|
|
* 資料修改
|
|
* @param {Object} event 事件
|
|
*/
|
|
fnUpd = function(event) {
|
|
var oValidator = null,
|
|
bEdit = (event.UserID === parent.UserID && event.Memo !== 'outlook'),
|
|
saBtns = [],
|
|
layerOption = {
|
|
type: 2,
|
|
title: '修改日程',
|
|
shade: 0.75,
|
|
maxmin: true, //开启最大化最小化按钮
|
|
area: ['800px', '580px'],
|
|
content: '/Page/Pop/CalanderPop.html',
|
|
success: function(layero, index) {
|
|
var iframe = $('iframe').contents();
|
|
fnSetArgDrop([{
|
|
ArgClassID: 'CalType',
|
|
Select: iframe.find('#CalType'),
|
|
ShowId: true,
|
|
CallBack: function(data) {
|
|
oValidator = fnValidate(iframe);
|
|
iframe.find('#CalType').val(event.CalType);
|
|
iframe.find('#Title').val(event.title);
|
|
iframe.find('#Description').val(event.content);
|
|
iframe.find('#GroupMembers').data('value', event.GroupMembers);
|
|
iframe.find('[name=OpenMent][value=' + event.OpenMent + ']').click();
|
|
iframe.find('[name=Importment][value=' + event.Importment + ']').click();
|
|
iframe.find('#AllDay')[0].checked = event.AllDay;
|
|
iframe.find('#CurrentDate').val(newDate(event.start, 1));
|
|
iframe.find('#StartDate').val(newDate(event.StartDate));
|
|
iframe.find('#EndDate').val(newDate(event.EndDate));
|
|
if (event.GroupMembers) {
|
|
fnSetUserDrop([{
|
|
UserIDs: event.GroupMembers,
|
|
CallBack: function(data) {
|
|
var saList = data,
|
|
saName = [];
|
|
$.each(saList, function(idx, item) {
|
|
saName.push(item.MemberName);
|
|
});
|
|
iframe.find('#GroupMembers').val(saName);
|
|
}
|
|
}]);
|
|
}
|
|
if (bEdit) {
|
|
fnRegisterEvent(iframe, 'upd');
|
|
} else {
|
|
disableInput(iframe);
|
|
}
|
|
}
|
|
}]);
|
|
layero.find('.layui-layer-btn1').css({ 'border-color': 'red', 'background-color': 'red', 'color': '#fff' });
|
|
}
|
|
};
|
|
|
|
if (bEdit) {
|
|
saBtns = [i18next.t('common.Confirm'), i18next.t('common.Toolbar_Del'), i18next.t('common.Cancel')]; //╠common.Confirm⇒確定╣ ╠common.Toolbar_Del⇒刪除╣ ╠common.Cancel⇒取消╣
|
|
layerOption.yes = function(index, layero) {
|
|
var iframe = $('iframe').contents();
|
|
iframe.find('#GroupMembers').removeAttr('readonly');
|
|
if (!iframe.find("#form_calendar").valid()) {
|
|
oValidator.focusInvalid();
|
|
iframe.find('#GroupMembers').attr('readonly', 'readonly');
|
|
return false;
|
|
}
|
|
|
|
var data = getFormSerialize(iframe.find('#form_calendar'));
|
|
data = packParams(data, 'upd');
|
|
data.UserID = parent.UserInfo.MemberID;
|
|
data.Description = data.Description || '';
|
|
data.Color = parent.UserInfo.CalColor;
|
|
data.AllDay = data.AllDay || '0';
|
|
fnUpdData(event, data);
|
|
layer.close(index);
|
|
};
|
|
layerOption.btn2 = function() {
|
|
CallAjax(ComFn.W_Com, ComFn.GetDel, {
|
|
Params: {
|
|
calendar: {
|
|
NO: event.id
|
|
}
|
|
}
|
|
}, function(res) {
|
|
if (res.d > 0) {
|
|
showMsg(i18next.t("message.Delete_Success"), 'success'); // ╠message.Delete_Success⇒刪除成功╣
|
|
oCalendar.fullCalendar('removeEvents', event.id);
|
|
if (parent.Outklook) {
|
|
outlookAPI(outlook.Calendar_Del, {
|
|
OutlookEventId: event.OutlookEventId
|
|
});
|
|
}
|
|
} else {
|
|
showMsg(i18next.t("message.Delete_Failed"), 'error'); // ╠message.Delete_Failed⇒刪除失敗╣
|
|
}
|
|
});
|
|
};
|
|
} else {
|
|
saBtns = [i18next.t('common.Cancel')];
|
|
}
|
|
layerOption.btn = saBtns;
|
|
layer.open(layerOption);
|
|
},
|
|
|
|
/**
|
|
* 選擇分組成員
|
|
* @param {Object} option 配置
|
|
*/
|
|
fnGetSetUserGroups = function(option) {
|
|
option = option || {};
|
|
var oGrid = null,
|
|
saItems = [],
|
|
saProfileGets = [],
|
|
fnGetSetlectOptions = function(el) {
|
|
var saSetlectOptions = [];
|
|
el.find('#lstRight option').each(function() {
|
|
var sId = this.value,
|
|
oItems = {},
|
|
sEmail = $(this).attr('data-email');
|
|
if (sEmail) {
|
|
oItems = {
|
|
UserID: sId,
|
|
UserName: $(this).text(),
|
|
OutlookEmail: sEmail
|
|
};
|
|
} else {
|
|
oItems = $.map(saItems, function(item) {
|
|
if (sId === item.MemberID) {
|
|
return {
|
|
UserID: item.MemberID,
|
|
UserName: item.MemberName,
|
|
OutlookEmail: item.OutlookAccount
|
|
};
|
|
}
|
|
})[0];
|
|
}
|
|
saSetlectOptions.push(oItems);
|
|
});
|
|
|
|
return saSetlectOptions;
|
|
},
|
|
fnSetProfileDrop = function(handle) {
|
|
return CallAjax(ComFn.W_Com, ComFn.GetList, {
|
|
Type: '',
|
|
Params: {
|
|
profiles: {
|
|
ProfileType: 'UserGroups',
|
|
OrgID: parent.OrgID,
|
|
UserID: parent.UserID
|
|
},
|
|
sort: { SN: 'asc' }
|
|
}
|
|
}, function(res) {
|
|
if (res.d) {
|
|
saProfileGets = JSON.parse(res.d);
|
|
handle.html(createOptions(saProfileGets, 'SN', 'ProfileName'));
|
|
}
|
|
});
|
|
},
|
|
fnAddProfile = function(layero) {
|
|
var oAddPm = {};
|
|
oAddPm.OrgID = parent.OrgID;
|
|
oAddPm.UserID = parent.UserID;
|
|
oAddPm.ProfileType = 'UserGroups';
|
|
oAddPm.ProfileName = layero.find('#ProfileName').val();
|
|
oAddPm.ProfileSet = fnGetSetlectOptions(layero);
|
|
oAddPm.ProfileSet = JSON.stringify(oAddPm.ProfileSet);
|
|
oAddPm = packParams(oAddPm);
|
|
|
|
if (!oAddPm.ProfileName) {
|
|
showMsg(i18next.t("message.ProfileFeesClassName_Required")); //╠message.ProfileFeesClassName_Required⇒請填寫個人化費用類別名稱╣
|
|
return false;
|
|
}
|
|
|
|
CallAjax(ComFn.W_Com, ComFn.GetAdd, {
|
|
Params: {
|
|
profiles: oAddPm
|
|
}
|
|
}, function(res) {
|
|
if (res.d > 0) {
|
|
fnSetProfileDrop(layero.find('#ProfileClass')).done(function() {
|
|
layero.find('#ProfileClass option').each(function() {
|
|
if ($(this).text() === oAddPm.ProfileName) {
|
|
layero.find('#ProfileClass').val(this.value);
|
|
return false;
|
|
}
|
|
});
|
|
});
|
|
showMsg(i18next.t("message.Save_Success"), 'success'); // ╠message.Save_Success⇒新增成功╣
|
|
} else {
|
|
showMsg(i18next.t("message.Save_Failed"), 'error'); // ╠message.Save_Failed⇒新增失敗╣
|
|
}
|
|
}, function() {
|
|
showMsg(i18next.t("message.Save_Failed"), 'error'); // ╠message.Save_Failed⇒新增失敗╣
|
|
});
|
|
},
|
|
fnUpdProfile = function(layero) {
|
|
var oUpdPm = {},
|
|
sId = layero.find('#ProfileClass').val();
|
|
oUpdPm.ProfileName = layero.find('#ProfileName').val();
|
|
oUpdPm.ProfileSet = [];
|
|
oUpdPm.ProfileSet = fnGetSetlectOptions(layero);
|
|
oUpdPm.ProfileSet = JSON.stringify(oUpdPm.ProfileSet);
|
|
oUpdPm = packParams(oUpdPm, 'upd');
|
|
|
|
if (!oUpdPm.ProfileName) {
|
|
showMsg(i18next.t("message.ProfileFeesClassName_Required")); // 請填寫個人化費用類別名稱
|
|
return false;
|
|
}
|
|
|
|
CallAjax(ComFn.W_Com, ComFn.GetUpd, {
|
|
Params: {
|
|
profiles: {
|
|
values: oUpdPm,
|
|
keys: { SN: sId }
|
|
}
|
|
}
|
|
}, function(res) {
|
|
if (res.d > 0) {
|
|
fnSetProfileDrop(layero.find('#ProfileClass')).done(function() {
|
|
layero.find('#ProfileClass').val(sId);
|
|
});
|
|
showMsg(i18next.t("message.Modify_Success"), 'success'); //╠message.Modify_Success⇒修改成功╣
|
|
} else {
|
|
showMsg(i18next.t("message.Modify_Failed"), 'error'); //╠message.Modify_Failed⇒修改失敗╣
|
|
}
|
|
}, function() {
|
|
showMsg(i18next.t("message.Modify_Failed"), 'error'); //╠message.Modify_Failed⇒修改失敗╣
|
|
});
|
|
},
|
|
fnDelProfile = function(layero) {
|
|
var sId = layero.find('#ProfileClass').val();
|
|
|
|
if (!sId) {
|
|
showMsg(i18next.t("message.DeleteItem_Required")); //╠message.DeleteItem_Required⇒請選擇要刪除的項目╣
|
|
return false;
|
|
}
|
|
CallAjax(ComFn.W_Com, ComFn.GetDel, {
|
|
Params: {
|
|
profiles: {
|
|
SN: sId
|
|
}
|
|
}
|
|
}, function(res) {
|
|
if (res.d > 0) {
|
|
fnSetProfileDrop(layero.find('#ProfileClass'));
|
|
layero.find('#ProfileName').val('');
|
|
layero.find('#lstRight').html('');
|
|
layero.find('#lstLeft').html(createOptions(saItems, 'MemberID', 'MemberName', true));
|
|
layero.find('#lstLeft').find('option:first').remove();
|
|
showMsg(i18next.t("message.Delete_Success"), 'success'); // ╠message.Delete_Success⇒刪除成功╣
|
|
} else {
|
|
showMsg(i18next.t("message.Delete_Failed"), 'error'); // ╠message.Delete_Failed⇒刪除失敗╣
|
|
}
|
|
}, function() {
|
|
showMsg(i18next.t("message.Delete_Failed"), 'error'); // ╠message.Delete_Failed⇒刪除失敗╣
|
|
});
|
|
};
|
|
|
|
getHtmlTmp('/Page/Pop/UserGroups.html').done(function(html) {
|
|
layer.open({
|
|
type: 1,
|
|
title: i18next.t('common.ProfileFees'), // ╠common.ProfileFees⇒個人化費用項目╣
|
|
shadeClose: false,
|
|
shade: 0.1,
|
|
maxmin: true, //开启最大化最小化按钮
|
|
area: ['600px', '590px'],
|
|
content: html,
|
|
success: function(layero, index) {
|
|
var elIistLeft = layero.find('#lstLeft'),
|
|
elListRight = layero.find('#lstRight');
|
|
fnSetProfileDrop(layero.find('#ProfileClass'));
|
|
fnSetUserDrop([{
|
|
Select: elIistLeft,
|
|
ShowId: true,
|
|
Action: option.Action, //傳入action來判斷是新增或是修改
|
|
CallBack: function(data) {
|
|
saItems = data;
|
|
}
|
|
}]).done(function() {
|
|
elIistLeft.find('option:first').remove();
|
|
optionListSearch(elIistLeft, elListRight, layero.find('#ProfileFilter'));
|
|
});
|
|
layero.find('#ProfileClass').on('change', function() {
|
|
var sProfile = this.value,
|
|
saProfileSet = [];
|
|
if (sProfile) {
|
|
var oProfileGet = $.grep(saProfileGets, function(e) { return e.SN.toString() == sProfile; })[0];
|
|
saProfileSet = JSON.parse(oProfileGet.ProfileSet || '[]');
|
|
layero.find('#ProfileName').val(oProfileGet.ProfileName);
|
|
} else {
|
|
layero.find('#ProfileName').val('');
|
|
}
|
|
elListRight.html('');
|
|
elIistLeft.html(createOptions(saItems, 'MemberID', 'MemberName', true)).find('option:first').remove();
|
|
elIistLeft.find('option').each(function() {
|
|
var _option = this,
|
|
sId = $(_option).val();
|
|
$.each(saProfileSet, function(index, item) {
|
|
if (sId === item.UserID) {
|
|
$(_option).appendTo(elListRight);
|
|
item.IsMove = true;
|
|
return false;
|
|
}
|
|
});
|
|
});
|
|
$.each(saProfileSet, function(index, item) {
|
|
if (!item.IsMove) {
|
|
$('<option/>', {
|
|
value: item.UserID,
|
|
text: item.UserName,
|
|
'data-email': item.OutlookEmail,
|
|
class: 'outer'
|
|
}).appendTo(elListRight);
|
|
}
|
|
});
|
|
});
|
|
layero.find('#AddOutGroupUser').on('click', function() {
|
|
var sOutUserName = $('#OutUserName').val(),
|
|
sOutEmail = $('#OutEmail').val(),
|
|
sGuid = guid();
|
|
if (!sOutUserName || !OutEmail) {
|
|
showMsg(i18next.t("message.OutUserNameAndOutEmail_Required")); // ╠message.OutUserNameAndOutEmail_Required⇒請填寫姓名和郵箱地址╣
|
|
return false;
|
|
}
|
|
if (!isEmail(sOutEmail)) {
|
|
showMsg(i18next.t("message.IncorrectEmail")); // ╠message.IncorrectEmail⇒郵箱格式不正確╣
|
|
return false;
|
|
}
|
|
$('<option/>', {
|
|
value: sGuid,
|
|
text: sOutUserName,
|
|
'data-email': sOutEmail,
|
|
class: 'outer'
|
|
}).appendTo(elListRight);
|
|
var oAddPm = {
|
|
Guid: sGuid,
|
|
UserName: sOutUserName,
|
|
Email: sOutEmail
|
|
};
|
|
oAddPm = packParams(oAddPm);
|
|
CallAjax(ComFn.W_Com, ComFn.GetAdd, {
|
|
Params: {
|
|
outerusers: oAddPm
|
|
}
|
|
});
|
|
});
|
|
layero.find('.cusclass-add').on('click', function() {
|
|
fnAddProfile(layero);
|
|
});
|
|
layero.find('.cusclass-upd').on('click', function() {
|
|
fnUpdProfile(layero);
|
|
});
|
|
layero.find('.cusclass-del').on('click', function() {
|
|
fnDelProfile(layero);
|
|
});
|
|
layero.find('#btnToRight').on('click', function() {
|
|
optionListMove(elIistLeft, elListRight);
|
|
});
|
|
layero.find('#btnToLeft').on('click', function() {
|
|
optionListMove(elListRight, elIistLeft);
|
|
});
|
|
layero.find('#btnToUp').on('click', function() {
|
|
optionListOrder(elListRight, true);
|
|
});
|
|
layero.find('#btnToDown').on('click', function() {
|
|
optionListOrder(elListRight, false);
|
|
});
|
|
transLang(layero);
|
|
},
|
|
btn: [i18next.t('common.Confirm'), i18next.t('common.Cancel')], //╠common.Confirm⇒確定╣╠common.Cancel⇒取消╣
|
|
yes: function(index, layero) {
|
|
var saRetn = fnGetSetlectOptions(layero);
|
|
if (typeof option.Callback === 'function') option.Callback(saRetn);
|
|
layer.close(index);
|
|
},
|
|
cancel: function() {
|
|
if (typeof option.CancelCallback === 'function') option.CancelCallback();
|
|
}
|
|
});
|
|
});
|
|
},
|
|
/**
|
|
* ToolBar 按鈕事件 function
|
|
* @param {Object} inst 按鈕物件對象
|
|
* @param {Object} e 事件對象
|
|
*/
|
|
fnButtonHandler = function(inst, e) {
|
|
var sId = inst.id;
|
|
switch (sId) {
|
|
case "Toolbar_Qry":
|
|
|
|
break;
|
|
case "Toolbar_Save":
|
|
|
|
break;
|
|
case "Toolbar_ReAdd":
|
|
|
|
break;
|
|
case "Toolbar_Clear":
|
|
|
|
break;
|
|
case "Toolbar_Leave":
|
|
|
|
break;
|
|
|
|
case "Toolbar_Add":
|
|
|
|
break;
|
|
case "Toolbar_Upd":
|
|
|
|
break;
|
|
case "Toolbar_Copy":
|
|
|
|
break;
|
|
case "Toolbar_Del":
|
|
|
|
break;
|
|
case "Toolbar_Exp":
|
|
|
|
break;
|
|
case "Toolbar_SynChronousOutlook":
|
|
{
|
|
var index = layer.load(0, { time: 10 * 1000 }); ////同步開啟loading,并且设定最长等待10秒
|
|
outlookAPI(outlook.SynChronous, { flag: "once", memo: index });
|
|
}
|
|
break;
|
|
default:
|
|
|
|
alert("No handle '" + sId + "'");
|
|
|
|
break;
|
|
}
|
|
},
|
|
saCusBtns = [];
|
|
|
|
if (parent.Outklook) {
|
|
saCusBtns.push({
|
|
id: 'Toolbar_SynChronousOutlook',
|
|
value: 'common.SynChronousOutlook' // ╠common.SynChronousOutlook⇒同步Outlook╣
|
|
});
|
|
}
|
|
|
|
commonInit({
|
|
PrgId: sProgramId,
|
|
ButtonHandler: fnButtonHandler,
|
|
Buttons: saCusBtns,
|
|
GoTop: true
|
|
});
|
|
fnSetArgDrop([{
|
|
ArgClassID: 'CalType',
|
|
CallBack: function(data) {
|
|
var saHeaderShow = [],
|
|
oCustomButtons = {
|
|
addevent: {
|
|
text: '新增日程',
|
|
click: function() {
|
|
fnAdd(new Date(), new Date().dateAdd('h', 1));
|
|
}
|
|
}
|
|
},
|
|
elCalType = $('<div class="fc-button-group" />');
|
|
$.grep(data, function(item, index) {
|
|
var sBtnId = 'cusbtn_' + item.id,
|
|
sCalType = '<label for="CalType_' + index + '">\
|
|
<input id="CalType_' + index + '" name="CalType[]" type="checkbox" value="' + item.id + '" checked="checked"><span class="openment-text">' + item.text + '</span>\
|
|
</label>';
|
|
|
|
saHeaderShow.push(sBtnId);
|
|
oCustomButtons[sBtnId] = {
|
|
text: item.text,
|
|
click: function(el) {
|
|
var sId = $(this).attr('data-id').replace('cusbtn_', '');
|
|
if ($(this).hasClass('selected')) {
|
|
$(this).removeClass('selected');
|
|
saCalType.remove(sId);
|
|
} else {
|
|
$(this).addClass('selected');
|
|
saCalType.push(sId);
|
|
}
|
|
oCalendar.fullCalendar('refetchEvents');
|
|
}
|
|
};
|
|
saCalType.push(item.id);
|
|
elCalType.append(sCalType);
|
|
});
|
|
|
|
oCalendar = $('#calendar').fullCalendar({
|
|
locale: 'zh-tw',
|
|
timezone: 'local',
|
|
schedulerLicenseKey: 'GPL-My-Project-Is-Open-Source',
|
|
theme: true,
|
|
weekends: true, // will hide Saturdays and Sundays
|
|
firstDay: 0,
|
|
isRTL: false,
|
|
defaultView: 'month',
|
|
defaultDate: new Date().formate("yyyy-MM-dd"),
|
|
navLinks: true, // can click iDay/week names to navigate views
|
|
editable: true,
|
|
droppable: true, // this allows things to be dropped onto the calendar(允許將事件拖動到日曆上)
|
|
eventLimit: true, // allow "more" link when too many events(允許出現更多圖標)
|
|
selectable: true,
|
|
selectHelper: true,
|
|
weekNumbers: true,
|
|
weekNumbersWithinDays: true,
|
|
weekNumberCalculation: 'ISO',
|
|
nowIndicator: true,
|
|
displayEventTime: true,
|
|
fixedWeekCount: false,
|
|
header: {
|
|
left: 'prev,next today addevent ', //saHeaderShow.join(' ')
|
|
center: 'title',
|
|
right: 'month1,month2,month,agendaWeek,agendaDay,listMonth'
|
|
},
|
|
buttonIcons: {
|
|
prev: 'left-single-arrow',
|
|
next: 'right-single-arrow',
|
|
prevYear: 'left-double-arrow',
|
|
nextYear: 'right-double-arrow'
|
|
},
|
|
themeButtonIcons: {
|
|
prev: 'circle-triangle-w',
|
|
next: 'circle-triangle-e',
|
|
prevYear: 'seek-prev',
|
|
nextYear: 'seek-next'
|
|
},
|
|
businessHours: [ // specify an array instead
|
|
{
|
|
dow: [1, 2, 3, 4, 5], // Monday, Tuesday, Wednesday
|
|
start: '09:00', // 8am
|
|
end: '18:30' // 6pm
|
|
}
|
|
],
|
|
customButtons: oCustomButtons,
|
|
select: function(start, end) {
|
|
fnAdd(start, end);
|
|
},
|
|
eventClick: function (calEvent) {
|
|
if (!!calEvent.show && calEvent.show) {
|
|
fnUpd(calEvent);
|
|
}
|
|
},
|
|
eventDrop: function(event) {
|
|
var data = {};
|
|
data.StartDate = newDate(event.start);
|
|
data.EndDate = newDate(event.end);
|
|
fnUpdData(event, data);
|
|
},
|
|
eventResize: function(event) {
|
|
var data = {};
|
|
data.StartDate = newDate(event.start);
|
|
data.EndDate = newDate(event.end);
|
|
fnUpdData(event, data);
|
|
},
|
|
eventMouseover: function (event, jsEvent, view) {
|
|
addTips($('[tooltips]'));
|
|
},
|
|
events: function(start, end, timezone, callback) {
|
|
g_api.ConnectLite(sProgramId, 'GetList', {
|
|
StartDate: newDate(start),
|
|
EndDate: newDate(end),
|
|
CalType: saCalType.join(','),
|
|
OpenMent: saOpenMent.join(',')
|
|
},
|
|
function(res) {
|
|
if (res.RESULT) {
|
|
var saEvents = res.DATA.rel;
|
|
$.each(saEvents, function (idx, item) {
|
|
if (item.CalType === '07') {
|
|
var Owner = item.CreateUser === parent.UserID;
|
|
if (Owner || isAdmin)
|
|
item.show = true;
|
|
else {
|
|
item.show = false;
|
|
item.Description = "";
|
|
}
|
|
}
|
|
else {
|
|
item.show = true;
|
|
}
|
|
|
|
});
|
|
callback(saEvents);
|
|
}
|
|
});
|
|
},
|
|
/**
|
|
* 處理資料(轉換成日曆資料格式)
|
|
*/
|
|
eventDataTransform: function(event) {
|
|
event.id = event.NO;
|
|
event.title = event.Title;
|
|
event.content = event.Description;
|
|
event.allDay = event.AllDay;
|
|
if (event.StartDate) event.start = event.StartDate;
|
|
if (event.EndDate) event.end = event.EndDate;
|
|
event.color = event.Importment === 'H' ? 'red' : event.Color;
|
|
event.className = 'calendar-event';
|
|
return event;
|
|
}
|
|
});
|
|
|
|
var elOpenMent = '<div class="fc-button-group" >\
|
|
<label for="OpenMent_0">\
|
|
<input id="OpenMent_0" name="OpenMent[]" type="checkbox" value="P" checked="checked"><span class="openment-text" data-i18n="CalanderPop.Individual">個人</span>\
|
|
</label>\
|
|
<label for="OpenMent_1">\
|
|
<input id="OpenMent_1" name="OpenMent[]" type="checkbox" value="G" checked="checked"><span class="openment-text" data-i18n="CalanderPop.Group">群組</span>\
|
|
</label>\
|
|
<label for="OpenMent_3">\
|
|
<input id="OpenMent_3" name="OpenMent[]" type="checkbox" value="C" checked="checked"><span class="openment-text" data-i18n="CalanderPop.Company">公司</span>\
|
|
</label>\
|
|
</div>';
|
|
//<label for="OpenMent_2">\
|
|
// <input id="OpenMent_2" name="OpenMent[]" type="checkbox" value="D" checked="checked"><span class="openment-text" data-i18n="CalanderPop.Department">部門</span>\
|
|
//</label>\
|
|
|
|
$('.fc-toolbar .fc-left').append(elCalType[0].outerHTML);
|
|
$('.fc-toolbar .fc-right').prepend(elOpenMent);
|
|
|
|
$('[name="CalType[]"]').click(function() {
|
|
saCalType = [];
|
|
$('[name="CalType[]"]').each(function() {
|
|
if (this.checked) {
|
|
saCalType.push(this.value);
|
|
}
|
|
});
|
|
oCalendar.fullCalendar('refetchEvents');
|
|
});
|
|
$('[name="OpenMent[]"]').click(function() {
|
|
saOpenMent = [];
|
|
$('[name="OpenMent[]"]').each(function() {
|
|
if (this.checked) {
|
|
saOpenMent.push(this.value);
|
|
}
|
|
});
|
|
oCalendar.fullCalendar('refetchEvents');
|
|
});
|
|
}
|
|
}]);
|
|
},
|
|
closeTips = function(index) {
|
|
layer.close(index); //同步完成后關閉loading
|
|
oCalendar.fullCalendar('refetchEvents');
|
|
};
|
|
|
|
require(['base', 'jsgrid', 'jbox', 'util'], fnPageInit);
|