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.
593 lines
28 KiB
593 lines
28 KiB
'use strict';
|
|
var sProgramId = getProgramId(),
|
|
sQueryPrgId = getQueryPrgId(),
|
|
sAction = getUrlParam('Action') || 'Add',
|
|
sDataId = getUrlParam('Guid'),
|
|
sCheckId = sDataId,
|
|
fnPageInit = function () {
|
|
var oCurData = {},
|
|
oForm = $('#form_main'),
|
|
oValidator = null,
|
|
oGrid = null,
|
|
saGridData = [],
|
|
/**
|
|
* 獲取分享權限
|
|
*/
|
|
fnGetRightOption = function () {
|
|
var saRight = [];
|
|
$('#lstRight option').each(function () {
|
|
saRight.push(this.value);
|
|
});
|
|
return saRight.join(',');
|
|
},
|
|
/**
|
|
* 獲取資料
|
|
*/
|
|
fnGet = function () {
|
|
if (sDataId) {
|
|
return g_api.ConnectLite(sQueryPrgId, ComFn.GetOne,
|
|
{
|
|
Guid: sDataId
|
|
},
|
|
function (res) {
|
|
if (res.RESULT) {
|
|
var oRes = res.DATA.rel;
|
|
oCurData = oRes;
|
|
saGridData = $.parseJSON(oCurData.Flows);
|
|
setFormVal(oForm, oRes);
|
|
fnSetHandle_PersonDrop(oCurData.Handle_DeptID, 1);
|
|
fnSetHandle_PersonDrop('', 2, false);
|
|
$("#jsGrid").jsGrid("loadData");
|
|
setNameById().done(function () {
|
|
getPageVal();//緩存頁面值,用於清除
|
|
});
|
|
}
|
|
});
|
|
}
|
|
else {
|
|
return $.Deferred().resolve().promise();
|
|
}
|
|
},
|
|
/**
|
|
* 新增資料
|
|
* @param {String} sFlag 新增或儲存後新增
|
|
*/
|
|
fnAdd = function (sFlag) {
|
|
var data = getFormSerialize(oForm),
|
|
oAddPm = {};
|
|
data = packParams(data);
|
|
data.OrgID = parent.OrgID;
|
|
data.ShareTo = fnGetRightOption();
|
|
data.Flows = JSON.stringify(saGridData);
|
|
data.Flows_Lock = data.Flows_Lock || 'N';
|
|
data.Handle_Lock = data.Handle_Lock || 'N';
|
|
delete data.lstLeft;
|
|
delete data.lstRight;
|
|
|
|
CallAjax(ComFn.W_Com, ComFn.GetAdd, {
|
|
Params: {
|
|
checkflow: data
|
|
}
|
|
}, function (res) {
|
|
if (res.d > 0) {
|
|
bRequestStorage = false;
|
|
if (sFlag == 'add') {
|
|
showMsgAndGo(i18next.t("message.Save_Success"), sQueryPrgId); // ╠message.Save_Success⇒新增成功╣
|
|
}
|
|
else {
|
|
showMsgAndGo(i18next.t("message.Save_Success"), sProgramId, '?Action=Add'); // ╠message.Save_Success⇒新增成功╣
|
|
}
|
|
parent.msgs.server.broadcast(data);
|
|
}
|
|
else {
|
|
showMsg(i18next.t("message.Save_Failed"), 'error'); // ╠message.Save_Failed⇒新增失敗╣
|
|
}
|
|
}, function () {
|
|
showMsg(i18next.t("message.Save_Failed"), 'error'); // ╠message.Save_Failed⇒新增失敗╣
|
|
});
|
|
},
|
|
/**
|
|
* 修改資料
|
|
*/
|
|
fnUpd = function () {
|
|
var data = getFormSerialize(oForm);
|
|
|
|
data = packParams(data, 'upd');
|
|
data.ShareTo = fnGetRightOption();
|
|
data.Flows = JSON.stringify(saGridData);
|
|
data.Flows_Lock = data.Flows_Lock || 'N';
|
|
data.Handle_Lock = data.Handle_Lock || 'N';
|
|
delete data.lstLeft;
|
|
delete data.lstRight;
|
|
|
|
CallAjax(ComFn.W_Com, ComFn.GetUpd, {
|
|
Params: {
|
|
checkflow: {
|
|
values: data,
|
|
keys: { Guid: sDataId }
|
|
}
|
|
}
|
|
}, function (res) {
|
|
if (res.d > 0) {
|
|
bRequestStorage = false;
|
|
showMsgAndGo(i18next.t("message.Modify_Success"), sQueryPrgId); //╠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⇒修改失敗╣
|
|
});
|
|
},
|
|
/**
|
|
* 資料刪除
|
|
*/
|
|
fnDel = function () {
|
|
CallAjax(ComFn.W_Com, ComFn.GetDel, {
|
|
Params: {
|
|
checkflow: {
|
|
Guid: sDataId
|
|
}
|
|
}
|
|
}, function (res) {
|
|
if (res.d > 0) {
|
|
showMsgAndGo(i18next.t("message.Delete_Success"), sQueryPrgId); // ╠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⇒刪除失敗╣
|
|
});
|
|
},
|
|
/**
|
|
* 設置公告類別下拉單
|
|
* @param {String} deptid 部門ID
|
|
* @param {String} flag 經辦單位或者共享對象
|
|
*/
|
|
fnSetHandle_PersonDrop = function (deptid, flag, bchange) {
|
|
var sDepartmentID = deptid || '';
|
|
fnSetUserDrop([
|
|
{
|
|
ShowId: true,
|
|
Action: sAction,
|
|
DepartmentID: sDepartmentID,
|
|
CallBack: function (data) {
|
|
var saList = data;
|
|
if (flag === 1) {
|
|
$('#Handle_Person').html(createOptions(saList, 'MemberID', 'MemberName', true));
|
|
if (oCurData.Handle_Person) {
|
|
$('#Handle_Person').val(oCurData.Handle_Person);
|
|
}
|
|
}
|
|
else {
|
|
var saLeft = [],
|
|
saRight = [];
|
|
if (oCurData.ShareTo) {
|
|
$.each(saList, function (idx, data) {
|
|
if (oCurData.ShareTo.indexOf(data.MemberID) > -1) {
|
|
saRight.push(data);
|
|
}
|
|
else {
|
|
saLeft.push(data);
|
|
}
|
|
});
|
|
}
|
|
else {
|
|
saLeft = saList;
|
|
}
|
|
$('#lstLeft').html(createOptions(saLeft, 'MemberID', 'MemberName', true)).find('option:first').remove();
|
|
if (!bchange) {
|
|
$('#lstRight').html(createOptions(saRight, 'MemberID', 'MemberName', true)).find('option:first').remove();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]);
|
|
},
|
|
/**
|
|
* 獲取匯入的資料
|
|
*/
|
|
fnGetPopData_ImportData = function (args) {
|
|
args = args || {};
|
|
args.Flow_Type = $('#Pop_Flow_Type').val();
|
|
args.Flow_Name = $('#Pop_Flow_Name').val();
|
|
|
|
return g_api.ConnectLite(sQueryPrgId, ComFn.GetPage, args);
|
|
},
|
|
/**
|
|
* 匯入資料
|
|
*/
|
|
fnImport = function () {
|
|
var oConfig = {
|
|
Get: fnGetPopData_ImportData,
|
|
SearchFields: [
|
|
{ id: "Pop_Flow_Type", type: 'select', i18nkey: 'CheckFlow_Upd.Flow_Type', html: $('#Flow_Type').html() },
|
|
{ id: "Pop_Flow_Name", type: 'text', i18nkey: 'CheckFlow_Upd.Flow_Name' }
|
|
],
|
|
Fields: [
|
|
{ name: "RowIndex", title: 'common.RowNumber', sorting: false, align: 'center', width: 40 },
|
|
{ name: "Flow_TypeName", title: 'CheckFlow_Upd.Flow_Type', width: 120 },
|
|
{ name: "Flow_Name", title: 'CheckFlow_Upd.Flow_Name', width: 150 }
|
|
],
|
|
Callback: function (item) {
|
|
oCurData = item;
|
|
saGridData = $.parseJSON(oCurData.Flows);
|
|
setFormVal(oForm, oCurData);
|
|
fnSetHandle_PersonDrop(oCurData.Handle_DeptID, 1);
|
|
fnSetHandle_PersonDrop('', 2, false);
|
|
$("#jsGrid").jsGrid("loadData");
|
|
}
|
|
};
|
|
oPenPops(oConfig);
|
|
},
|
|
/**
|
|
* 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":
|
|
|
|
if (!$("#form_main").valid()) {
|
|
oValidator.focusInvalid();
|
|
return false;
|
|
}
|
|
|
|
if (sAction == 'Add') {
|
|
fnAdd('add');
|
|
}
|
|
else {
|
|
fnUpd();
|
|
}
|
|
|
|
break;
|
|
case "Toolbar_ReAdd":
|
|
|
|
if (!$("#form_main").valid()) {
|
|
oValidator.focusInvalid();
|
|
return false;
|
|
}
|
|
fnAdd('readd');
|
|
|
|
break;
|
|
case "Toolbar_Clear":
|
|
|
|
clearPageVal();
|
|
|
|
break;
|
|
case "Toolbar_Leave":
|
|
|
|
pageLeave();
|
|
|
|
break;
|
|
|
|
case "Toolbar_Add":
|
|
|
|
break;
|
|
case "Toolbar_Upd":
|
|
|
|
break;
|
|
case "Toolbar_Copy":
|
|
|
|
break;
|
|
case "Toolbar_Del": // ╠message.ConfirmToDelete⇒確定要刪除嗎 ?╣ ╠common.Tips⇒提示╣
|
|
|
|
layer.confirm(i18next.t("message.ConfirmToDelete"), { icon: 3, title: i18next.t('common.Tips') }, function (index) {
|
|
fnDel();
|
|
layer.close(index);
|
|
});
|
|
|
|
break;
|
|
case "Toolbar_Imp":
|
|
|
|
fnImport();
|
|
|
|
break;
|
|
default:
|
|
|
|
alert("No handle '" + sId + "'");
|
|
|
|
break;
|
|
}
|
|
},
|
|
/**
|
|
* 初始化 function
|
|
*/
|
|
init = function () {
|
|
var saCusBtns = [];
|
|
if (sAction === 'Add') {
|
|
saCusBtns = [{
|
|
id: 'Toolbar_Imp',
|
|
value: 'common.Toolbar_Imp'// ╠common.Toolbar_Imp⇒匯入╣
|
|
}];
|
|
}
|
|
|
|
commonInit({
|
|
PrgId: sProgramId,
|
|
ButtonHandler: fnButtonHandler,
|
|
Buttons: saCusBtns,
|
|
GoTop: true
|
|
});
|
|
oValidator = $("#form_main").validate();
|
|
|
|
$.whenArray([
|
|
fnSetDeptDrop($('#Handle_DeptID,#ShareType')),
|
|
fnSetUserDrop([
|
|
{
|
|
ShowId: true,
|
|
Select: $('#Handle_Person'),
|
|
Select2: true,
|
|
Action: sAction,
|
|
CallBack: function (data) {
|
|
$('#lstLeft').html(createOptions(data, 'MemberID', 'MemberName', true))[0].remove(0);
|
|
}
|
|
}
|
|
]),
|
|
fnSetArgDrop([
|
|
{
|
|
ArgClassID: 'Flow_Type',
|
|
Select: $('#Flow_Type'),
|
|
ShowId: true
|
|
}
|
|
])])
|
|
.done(function () {
|
|
fnGet();
|
|
});
|
|
$('#Handle_DeptID').on('change', function () {
|
|
fnSetHandle_PersonDrop(this.value, 1);
|
|
});
|
|
$('#Agent_Person').on('change', function () {
|
|
oCurData.Agent_Person = this.value;
|
|
});
|
|
$('#ShareType').on('change', function () {
|
|
fnSetHandle_PersonDrop(this.value, 2, true);
|
|
});
|
|
|
|
$('#btnToRight').click(function () {
|
|
optionListMove($('#lstLeft'), $('#lstRight'));
|
|
oCurData.ShareTo = fnGetRightOption();
|
|
});
|
|
$('#btnToLeft').click(function () {
|
|
optionListMove($('#lstRight'), $('#lstLeft'));
|
|
oCurData.ShareTo = fnGetRightOption();
|
|
});
|
|
|
|
$('.flowlink').on('click', function () {
|
|
var oOption = {};
|
|
oOption.SignedWay = this.id;
|
|
oOption.Callback = function (data) {
|
|
if (data.Users.length > 0) {
|
|
var oFlow = {};
|
|
if (data.FlowType === 'flow1') {
|
|
$.each(data.Users, function (idx, user) {
|
|
oFlow = {};
|
|
oFlow.id = guid();
|
|
oFlow.Order = saGridData.length + 1;
|
|
oFlow.SignedWay = data.FlowType;
|
|
oFlow.SignedMember = [{
|
|
id: user.id,
|
|
name: user.name,
|
|
deptname: user.deptname,
|
|
jobname: user.jobname
|
|
}];
|
|
saGridData.push(oFlow);
|
|
});
|
|
}
|
|
else {
|
|
var saUsers = [];
|
|
$.each(data.Users, function (idx, user) {
|
|
saUsers.push({
|
|
id: user.id,
|
|
name: user.name,
|
|
deptname: user.deptname,
|
|
jobname: user.jobname
|
|
});
|
|
});
|
|
oFlow.id = guid();
|
|
oFlow.Order = saGridData.length + 1;
|
|
oFlow.SignedWay = data.FlowType;
|
|
oFlow.SignedMember = saUsers;
|
|
saGridData.push(oFlow);
|
|
}
|
|
saGridData = releaseGridList(saGridData);
|
|
$("#jsGrid").jsGrid("loadData");
|
|
}
|
|
};
|
|
oPenUserListPop(oOption);
|
|
});
|
|
|
|
$("#jsGrid").jsGrid({
|
|
width: "100%",
|
|
height: "auto",
|
|
autoload: true,
|
|
filtering: false,
|
|
pageLoading: true,
|
|
pageIndex: 1,
|
|
pageSize: 10000,
|
|
fields: [
|
|
{
|
|
name: "Order", title: 'common.Order', width: 50, align: "center",
|
|
itemTemplate: function (val, item) {
|
|
return val < 10 ? '0' + val : val;
|
|
}
|
|
},
|
|
{
|
|
name: "SignedWay", title: 'common.SignedWay', width: 120, align: "center",
|
|
itemTemplate: function (val, item) {
|
|
return i18next.t('common.' + val);
|
|
}
|
|
},
|
|
{
|
|
type: "Icon", width: 50, align: "center",
|
|
itemTemplate: function (val, item) {
|
|
var oIcon = {
|
|
flow1: '<img src="../../images/flow_check.gif">',
|
|
flow2: '<img src="../../images/flow_check.gif"><img src="../../images/flow_check.gif">',
|
|
flow3: '<img src="../../images/flow_check.gif"><img src="../../images/flow_nocheck.gif">',
|
|
flow4: '<img src="../../images/flow4.gif">'
|
|
},
|
|
sIcon = oIcon[item.SignedWay];
|
|
if (item.Order !== saGridData.length) {
|
|
sIcon += '<br><img src="../../images/flow_arrow.gif" style="vertical-align:top;">'
|
|
}
|
|
return sIcon;
|
|
}
|
|
},
|
|
{
|
|
name: "SignedMember", title: 'common.SignedMember', width: 500,
|
|
itemTemplate: function (val, item) {
|
|
return Enumerable.From(val).ToString(",", "$.name");
|
|
}
|
|
},
|
|
{
|
|
type: "control", title: 'common.Action', width: 200,
|
|
itemTemplate: function (val, item) {
|
|
var oBtns = [$('<div>', { class: 'fa-item col-sm-3' }).append($('<i>', {
|
|
class: 'glyphicon glyphicon-pencil',
|
|
title: i18next.t('common.Edit'),// ╠common.Edit⇒編輯╣
|
|
click: function () {
|
|
var oOption = {};
|
|
oOption.SignedWay = item.SignedWay;
|
|
oOption.SignedMember = item.SignedMember;
|
|
oOption.Callback = function (data) {
|
|
if (data.Users.length > 0) {
|
|
var oFlow = {};
|
|
if (data.FlowType === 'flow1') {
|
|
$.each(data.Users, function (idx, user) {
|
|
oFlow = {};
|
|
oFlow.id = guid();
|
|
oFlow.Order = item.Order + idx;
|
|
oFlow.SignedWay = data.FlowType;
|
|
oFlow.SignedMember = [{
|
|
id: user.id,
|
|
name: user.name,
|
|
deptname: user.deptname,
|
|
jobname: user.jobname
|
|
}];
|
|
saGridData.insert(item.Order + idx, oFlow);
|
|
});
|
|
}
|
|
else {
|
|
var saUsers = [];
|
|
$.each(data.Users, function (idx, user) {
|
|
saUsers.push({
|
|
id: user.id,
|
|
name: user.name,
|
|
deptname: user.deptname,
|
|
jobname: user.jobname
|
|
});
|
|
});
|
|
oFlow.id = guid();
|
|
oFlow.Order = item.Order;
|
|
oFlow.SignedWay = data.FlowType;
|
|
oFlow.SignedMember = saUsers;
|
|
saGridData.insert(item.Order, oFlow);
|
|
}
|
|
var iOrder = 1;
|
|
$.each(saGridData, function (idx, _data) {
|
|
if (item.id !== _data.id) {
|
|
_data.Order = iOrder;
|
|
iOrder++;
|
|
}
|
|
});
|
|
saGridData = Enumerable.From(saGridData).Where(function (e) { return e.id !== item.id; }).ToArray();
|
|
saGridData = releaseGridList(saGridData);
|
|
$("#jsGrid").jsGrid("loadData");
|
|
}
|
|
};
|
|
oPenUserListPop(oOption);
|
|
}
|
|
})),
|
|
$('<div>', { class: 'fa-item col-sm-3' }).append($('<i>', {
|
|
class: 'glyphicon glyphicon-trash',
|
|
title: i18next.t('common.Toolbar_Del'),// ╠common.Toolbar_Del⇒刪除╣
|
|
click: function () {
|
|
var saNewList = Enumerable.From(saGridData).Where(function (e) { return e.id !== item.id; }).ToArray();
|
|
saGridData = saNewList;
|
|
$.each(saGridData, function (idx, _data) {
|
|
_data.Order = idx + 1;
|
|
});
|
|
saGridData = releaseGridList(saGridData);
|
|
$("#jsGrid").jsGrid("loadData");
|
|
}
|
|
}))];
|
|
|
|
if (saGridData.length !== item.Order) {
|
|
oBtns.push($('<div>', { class: 'fa-item col-sm-3' }).append($('<i>', {
|
|
class: 'glyphicon glyphicon-arrow-down',
|
|
title: i18next.t('common.Down'),// ╠common.Down⇒下移╣
|
|
click: function () {
|
|
var sOrder = Enumerable.From(saGridData).Where(function (e) { return e.id === item.id; }).ToString('', '$.Order'),
|
|
iOrder = sOrder * 1;
|
|
$.each(saGridData, function (idx, _data) {
|
|
if (iOrder === _data.Order) {
|
|
_data.Order++;
|
|
}
|
|
else if ((iOrder + 1) === _data.Order) {
|
|
_data.Order--;
|
|
}
|
|
});
|
|
saGridData = releaseGridList(saGridData);
|
|
$("#jsGrid").jsGrid("loadData");
|
|
}
|
|
})));
|
|
}
|
|
else {
|
|
oBtns.push($('<div>', { class: 'fa-item col-sm-3' }));
|
|
}
|
|
|
|
if (1 !== item.Order) {
|
|
oBtns.push($('<div>', { class: 'fa-item col-sm-3' }).append($('<i>', {
|
|
class: 'glyphicon glyphicon-arrow-up',
|
|
title: i18next.t('common.Up'),// ╠common.Up⇒上移╣
|
|
click: function () {
|
|
var sOrder = Enumerable.From(saGridData).Where(function (e) { return e.id === item.id; }).ToString('', '$.Order'),
|
|
iOrder = sOrder * 1;
|
|
$.each(saGridData, function (idx, _data) {
|
|
if (iOrder === _data.Order) {
|
|
_data.Order--;
|
|
}
|
|
else if ((iOrder - 1) === _data.Order) {
|
|
_data.Order++;
|
|
}
|
|
});
|
|
saGridData = releaseGridList(saGridData);
|
|
$("#jsGrid").jsGrid("loadData");
|
|
}
|
|
})));
|
|
}
|
|
|
|
return oBtns;
|
|
}
|
|
}
|
|
],
|
|
controller: {
|
|
loadData: function (args) {
|
|
return {
|
|
data: saGridData,
|
|
itemsCount: saGridData.length //data.length
|
|
};
|
|
},
|
|
insertItem: function (args) {
|
|
},
|
|
updateItem: function (args) {
|
|
},
|
|
deleteItem: function (args) {
|
|
}
|
|
},
|
|
onInit: function (args) {
|
|
oGrid = args.grid;
|
|
}
|
|
});
|
|
};
|
|
|
|
init();
|
|
};
|
|
|
|
require(['base', 'select2', 'jsgrid', 'common_eip', 'util'], fnPageInit);
|