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.

825 lines
41 KiB

2 years ago
  1. 'use strict';
  2. var sProgramId = getProgramId(),
  3. sQueryPrgId = getQueryPrgId(),
  4. sViewPrgId = sProgramId.replace('_Upd', '_View'),
  5. sAction = getUrlParam('Action') || 'Add',
  6. sDataId = getUrlParam('Guid'),
  7. sCustomerId = getUrlParam('CustomerId'),
  8. sContactorName = getUrlParam('ContactorName'),
  9. sCheckId = sDataId,
  10. fnPageInit = function () {
  11. var oCurData = { CheckOrder: [], PayeeInfo: [] },
  12. oForm = $('#form_main'),
  13. oGrid = null,
  14. oValidator = null,
  15. sOptionHtml_ExhibitionName = '',
  16. sOptionHtml_CoopAgent = '',
  17. sOptionHtml_GroupUnit = '',
  18. sOptionHtml_ComplaintSource = '',
  19. sOptionHtml_Customer = '',
  20. oAddItem = {},
  21. saUsers = [],
  22. /**
  23. * 獲取資料
  24. */
  25. fnGet = function () {
  26. if (sDataId) {
  27. return g_api.ConnectLite(sQueryPrgId, ComFn.GetOne,
  28. {
  29. Guid: sDataId
  30. },
  31. function (res) {
  32. if (res.RESULT) {
  33. var oRes = res.DATA.rel;
  34. oCurData = oRes;
  35. oCurData.CheckOrder = $.parseJSON(oCurData.CheckOrder);
  36. setFormVal(oForm, oRes);
  37. $('#ExhibitionName').html(sOptionHtml_ExhibitionName).val(oRes.ExhibitionName).select2();
  38. $('#ComplaintSource').html(sOptionHtml_ComplaintSource).val(oRes.ComplaintSource).select2();
  39. $('#CoopAgent').html(sOptionHtml_CoopAgent).val(oRes.CoopAgent).select2();
  40. $('#GroupUnit').html(sOptionHtml_GroupUnit).val(oRes.GroupUnit).select2();
  41. $('#CustomerCName').html(sOptionHtml_Customer).val(oRes.CustomerCName).select2();
  42. $('#Applicant').text(oCurData.CreateUserName + '(' + oCurData.CreateUser + ') ' + oCurData.DepartmentName);
  43. fnGetUploadFiles(oCurData.Guid, fnUpload);
  44. if (oCurData.Handle_DeptID) {
  45. fnSetUserDrop([
  46. {
  47. Select: $('#Handle_Person'),
  48. DepartmentID: oCurData.Handle_DeptID,
  49. ShowId: true,
  50. Select2: true,
  51. Action: sAction,
  52. DefultVal: oCurData.Handle_Person
  53. }
  54. ]);
  55. }
  56. if (oCurData.Flows_Lock === 'Y') {
  57. $(".checkordertoolbox").hide();
  58. }
  59. else {
  60. $(".checkordertoolbox").show();
  61. }
  62. if (oCurData.Handle_Lock === 'Y') {
  63. $("#Handle_DeptID,#Handle_Person").attr('disabled', false);
  64. }
  65. else {
  66. $("#Handle_DeptID,#Handle_Person").removeAttr('disabled');
  67. }
  68. $("#jsGrid").jsGrid("loadData");
  69. $("#jsGrid1").jsGrid("loadData");
  70. setNameById().done(function () {
  71. getPageVal();//緩存頁面值,用於清除
  72. });
  73. }
  74. });
  75. }
  76. else {
  77. if(sCustomerId != "" && sCustomerId != null){
  78. $('#CustomerCName').html(sOptionHtml_Customer).val(sCustomerId).select2();
  79. } else {
  80. $('#CustomerCName').html(sOptionHtml_Customer).select2();
  81. }
  82. if(sContactorName != "" & sContactorName != null){
  83. $('#Complainant').val(decodeURI(atob(sContactorName)));
  84. }
  85. $('#ExhibitionName').html(sOptionHtml_ExhibitionName).select2();
  86. $('#ComplaintSource').html(sOptionHtml_ComplaintSource).select2();
  87. $('#CoopAgent').html(sOptionHtml_CoopAgent).select2();
  88. $('#GroupUnit').html(sOptionHtml_GroupUnit).select2();
  89. //$('#Applicant').text(oCurData.CreateUserName + '(' + oCurData.CreateUser + ') ' + oCurData.DepartmentName);
  90. oCurData.PayeeInfo = [];
  91. oCurData.CheckOrder = [];
  92. oCurData.Guid = guid();
  93. fnUpload();
  94. return $.Deferred().resolve().promise();
  95. }
  96. },
  97. /**
  98. * 新增資料
  99. * @param sFlag{String} 新增或儲存後新增
  100. */
  101. fnAdd = function (flag) {
  102. var data = getFormSerialize(oForm);
  103. data = packParams(data);
  104. data.OrgID = parent.OrgID;
  105. data.Guid = oCurData.Guid;
  106. data.SignedNumber = 'SerialNumber|' + parent.UserInfo.OrgID + '|IAP|MinYear|3|' + parent.UserInfo.ServiceCode + '|' + parent.UserInfo.ServiceCode;
  107. data.CheckFlows = fnCheckFlows(oCurData, false, true, saUsers);
  108. data.HandleFlows = fnHandleFlows(oCurData, saUsers)
  109. data.PayeeInfo = JSON.stringify(oCurData.PayeeInfo);
  110. data.RemittanceInformation = JSON.stringify(data.RemittanceInformation);
  111. data.CheckOrder = JSON.stringify(oCurData.CheckOrder);
  112. data.DataType = 'A';
  113. data.IsHandled = 'N';
  114. data.PayeeType = 'P';
  115. data.Inspectors = '';
  116. data.Reminders = '';
  117. data.Flows_Lock = oCurData.Flows_Lock;
  118. data.Handle_Lock = oCurData.Handle_Lock;
  119. data.PayeeName = $('#Payee option:selected').text();
  120. data.CustomerId = data.CustomerCName;
  121. delete data.CustomerCName;
  122. data.ExhibitionNO = data.ExhibitionName;
  123. g_api.ConnectLite(Service.com, ComFn.GetSerial, {
  124. Type: parent.UserInfo.OrgID === 'TE' ? '' : parent.UserInfo.OrgID,
  125. Flag: 'MinYear',
  126. Len: 3,
  127. Str: '',
  128. AddType: '',
  129. PlusType: ''
  130. }, function (res) {
  131. if (res.RESULT) {
  132. data.ComplaintNumber = res.DATA.rel;
  133. CallAjax(ComFn.W_Com, ComFn.GetAdd, {
  134. Params: {
  135. complaint: data
  136. }
  137. }, function (res) {
  138. if (res.d > 0) {
  139. bRequestStorage = false;
  140. if (flag == 'add') {
  141. showMsgAndGo(i18next.t("message.Save_Success"), sProgramId, '?Action=Upd&Guid=' + data.Guid); // ╠message.Save_Success⇒新增成功╣
  142. }
  143. else {
  144. showMsgAndGo(i18next.t("message.Save_Success"), sProgramId, '?Action=Add'); // ╠message.Save_Success⇒新增成功╣
  145. }
  146. }
  147. else {
  148. showMsg(i18next.t("message.Save_Failed"), 'error'); // ╠message.Save_Failed⇒新增失敗╣
  149. }
  150. }, function () {
  151. showMsg(i18next.t("message.Save_Failed"), 'error'); // ╠message.Save_Failed⇒新增失敗╣
  152. });
  153. } else {
  154. showMsg(i18next.t('message.CreateBill_Failed') + '<br>' + res.MSG, 'error'); // ╠message.CreateBill_Failed⇒帳單新增失敗╣
  155. }
  156. }, function () {
  157. showMsg(i18next.t('message.CreateBill_Failed'), 'error'); // ╠message.CreateBill_Failed⇒帳單新增失敗╣
  158. });
  159. },
  160. /**
  161. * 修改資料
  162. * @param {Boolean} balert 是否提示
  163. */
  164. fnUpd = function (balert) {
  165. var data = getFormSerialize(oForm);
  166. data = packParams(data, 'upd');
  167. data.CheckFlows = fnCheckFlows(oCurData, false, true, saUsers);
  168. data.HandleFlows = fnHandleFlows(oCurData, saUsers);
  169. data.CheckOrder = JSON.stringify(oCurData.CheckOrder);
  170. data.Flows_Lock = oCurData.Flows_Lock;
  171. data.Handle_Lock = oCurData.Handle_Lock;
  172. data.ExhibitionNO = data.ExhibitionName;
  173. data.CustomerId = data.CustomerCName;
  174. delete data.ExhibitionName;
  175. delete data.CustomerCName;
  176. return CallAjax(ComFn.W_Com, ComFn.GetUpd, {
  177. Params: {
  178. complaint: {
  179. values: data,
  180. keys: { Guid: sDataId }
  181. }
  182. }
  183. }, function (res) {
  184. if (res.d > 0) {
  185. if (!balert) {
  186. bRequestStorage = false;
  187. showMsg(i18next.t("message.Modify_Success"), 'success'); //╠message.Modify_Success⇒修改成功╣
  188. if (window.bLeavePage) {
  189. setTimeout(function () {
  190. pageLeave();
  191. }, 1000);
  192. }
  193. }
  194. }
  195. else {
  196. showMsg(i18next.t("message.Modify_Failed"), 'error');//╠message.Modify_Failed⇒修改失敗╣
  197. }
  198. }, function () {
  199. showMsg(i18next.t("message.Modify_Failed"), 'error');//╠message.Modify_Failed⇒修改失敗╣
  200. });
  201. },
  202. /**
  203. * 資料刪除
  204. */
  205. fnDel = function () {
  206. CallAjax(ComFn.W_Com, ComFn.GetDel, {
  207. Params: {
  208. complaint: {
  209. Guid: sDataId
  210. }
  211. }
  212. }, function (res) {
  213. if (res.d > 0) {
  214. DelTask(sDataId);
  215. showMsgAndGo(i18next.t("message.Delete_Success"), sQueryPrgId); // ╠message.Delete_Success⇒刪除成功╣
  216. }
  217. else {
  218. showMsg(i18next.t("message.Delete_Failed"), 'error'); // ╠message.Delete_Failed⇒刪除失敗╣
  219. }
  220. }, function () {
  221. showMsg(i18next.t("message.Delete_Failed"), 'error'); // ╠message.Delete_Failed⇒刪除失敗╣
  222. });
  223. },
  224. /**
  225. * 上傳附件
  226. * @param {Array} files 上傳的文件
  227. */
  228. fnUpload = function (files) {
  229. var option = {};
  230. option.input = $('#fileInput');
  231. option.theme = 'dragdropbox';
  232. option.folder = 'InvoiceApplyForPersonal';
  233. option.type = 'list';
  234. option.parentid = oCurData.Guid;
  235. if (files) {
  236. option.files = files;
  237. }
  238. fnUploadRegister(option);
  239. },
  240. /**
  241. * 提交簽呈
  242. */
  243. fnSubmitPetition = function () {
  244. g_api.ConnectLite(sProgramId, 'ComplaintToAudit', {
  245. Guid: oCurData.Guid
  246. }, function (res) {
  247. if (res.RESULT) {
  248. showMsgAndGo(i18next.t("message.ToAudit_Success"), sViewPrgId, '?Action=Upd&Guid=' + oCurData.Guid);// ╠message.ToAudit_Success⇒提交審核成功╣
  249. parent.msgs.server.pushTips(parent.fnReleaseUsers(res.DATA.rel));
  250. }
  251. else {
  252. showMsg(i18next.t('message.ToAudit_Failed') + '<br>' + res.MSG, 'error'); // ╠message.ToAudit_Failed⇒提交審核失敗╣
  253. }
  254. }, function () {
  255. showMsg(i18next.t('message.ToAudit_Failed'), 'error'); // ╠message.ToAudit_Failed⇒提交審核失敗╣
  256. });
  257. },
  258. /**
  259. * 提交費用項目
  260. * TETG以TWD為主其他幣別為輔
  261. * SG以RMB為主其他幣別為輔
  262. */
  263. fnSumPayeeInfo = function () {
  264. //TE、TG以TWD為主,其他幣別為輔。
  265. //SG以RMB為主,其他幣別為輔。
  266. var iTotal_MainCurrency = 0;
  267. var iTotal_SecondCurrency = 0;
  268. var MainRoundingPoint = 0;
  269. var MainCurrency = 'NTD';
  270. var SecondCurrency = 'NTD';
  271. var SecondRoundingPoint = 2;
  272. if (parent.OrgID === 'SG') {
  273. MainCurrency = 'RMB';
  274. SecondCurrency = 'RMB';
  275. MainRoundingPoint = 2;
  276. }
  277. $.each(oCurData.PayeeInfo, function (idx, info) {
  278. let PayeeAmount = parseFloat((info.Amount || '0').toString().replaceAll(',', ''));
  279. if (info.Currency === MainCurrency) {
  280. iTotal_MainCurrency += PayeeAmount;
  281. }
  282. else {
  283. iTotal_SecondCurrency += PayeeAmount;
  284. SecondCurrency = info.Currency;
  285. if (info.Currency === 'NTD') {
  286. SecondRoundingPoint = 0;
  287. }
  288. }
  289. });
  290. $('#RemittanceInformation_TotalCurrencyTW').val(MainCurrency);
  291. $('#RemittanceInformation_InvoiceApplyTotalTW').val(fMoney(iTotal_MainCurrency, MainRoundingPoint, MainCurrency));
  292. $('#RemittanceInformation_TotalCurrency').val(SecondCurrency);
  293. $('#RemittanceInformation_InvoiceApplyTotal').val(fMoney(iTotal_SecondCurrency, SecondRoundingPoint, ''));
  294. },
  295. /**
  296. * 通過帳單號碼抓去專案代號
  297. * @param {HTMLElement} dom select控件
  298. */
  299. fnGetPrjCodeByBillNO = function (dom) {
  300. var sBillNO = dom.value;
  301. g_api.ConnectLite(Service.eip, 'GetPrjCodeByBillNO', {
  302. BillNO: sBillNO
  303. }, function (res) {
  304. if (res.RESULT) {
  305. var oRes = res.DATA.rel;
  306. $(dom).parent().next().find('select').val(oRes.PrjCode).trigger("change");
  307. }
  308. });
  309. },
  310. /**
  311. * 獲取客訴來源
  312. */
  313. setComplaintSourceDrop = function () {
  314. return g_api.ConnectLite(Service.com, ComFn.GetArguments, {
  315. OrgID: 'TE',
  316. ArgClassID: 'CRMComplaintSource'
  317. }, function (res) {
  318. if (res.RESULT) {
  319. let QueryData = res.DATA.rel;
  320. if (QueryData.length > 0) {
  321. sOptionHtml_ComplaintSource = createOptions(QueryData, 'id', 'text', true);
  322. //$('#ComplaintSource').append(createOptions(QueryData, 'id', 'text', true)).select2();
  323. }
  324. }
  325. });
  326. },
  327. /**
  328. * 獲取組團單位
  329. */
  330. fnSetGroupUnit = function () {
  331. g_api.ConnectLite('Complaint_Qry', 'GetGroupUnit', {}, function (res) {
  332. if (res.RESULT) {
  333. var saList = res.DATA.rel;
  334. sOptionHtml_GroupUnit = createOptions(saList, 'guid', 'CustomerShotCName');
  335. //$('#GroupUnit').html(sOptions).select2();
  336. }
  337. });
  338. },
  339. /**
  340. * 獲取配合代理
  341. */
  342. fnSetCoopAgent = function () {
  343. g_api.ConnectLite('Complaint_Qry', 'GetCoopAgent', {}, function (res) {
  344. if (res.RESULT) {
  345. var saList = res.DATA.rel;
  346. sOptionHtml_CoopAgent = createOptions(saList, 'guid', 'CustomerShotCName');
  347. //$('#CoopAgent').html(sOptions).select2();
  348. }
  349. });
  350. },
  351. /**
  352. * 獲取客戶名稱
  353. */
  354. fnSetCustomers = function () {
  355. g_api.ConnectLite('Complaint_Qry', 'GetCustomers', {}, function (res) {
  356. if (res.RESULT) {
  357. var saList = res.DATA.rel;
  358. sOptionHtml_Customer = createOptions(saList, 'guid', 'CustomerCName');
  359. //$('#CustomerCName').html(sOptions).select2();
  360. }
  361. });
  362. },
  363. /**
  364. * ToolBar 按鈕事件 function
  365. * @param {Object}inst 按鈕物件對象
  366. * @param {Object} e 事件對象
  367. */
  368. fnButtonHandler = function (inst, e) {
  369. var sId = inst.id;
  370. switch (sId) {
  371. case "Toolbar_Qry":
  372. break;
  373. case "Toolbar_Save":
  374. if (!$("#form_main").valid()) {
  375. oValidator.focusInvalid();
  376. return false;
  377. }
  378. if (sAction === 'Add') {
  379. fnAdd('add');
  380. }
  381. else {
  382. fnUpd();
  383. }
  384. break;
  385. case "Toolbar_ReAdd":
  386. if (!$("#form_main").valid()) {
  387. oValidator.focusInvalid();
  388. return false;
  389. }
  390. fnAdd('readd');
  391. break;
  392. case "Toolbar_Clear":
  393. clearPageVal();
  394. break;
  395. case "Toolbar_Leave":
  396. pageLeave();
  397. break;
  398. case "Toolbar_Add":
  399. break;
  400. case "Toolbar_Upd":
  401. break;
  402. case "Toolbar_Copy":
  403. break;
  404. case "Toolbar_Petition":
  405. if (!$("#form_main").valid()) {
  406. oValidator.focusInvalid();
  407. return false;
  408. }
  409. fnUpd(true).done(function () {
  410. fnSubmitPetition();
  411. });
  412. break;
  413. case "Toolbar_Del": // ╠message.ConfirmToDelete⇒確定要刪除嗎 ?╣ ╠common.Tips⇒提示╣
  414. layer.confirm(i18next.t("message.ConfirmToDelete"), { icon: 3, title: i18next.t('common.Tips') }, function (index) {
  415. fnDel();
  416. layer.close(index);
  417. });
  418. break;
  419. default:
  420. alert("No handle '" + sId + "'");
  421. break;
  422. }
  423. },
  424. /**
  425. * 初始化 function
  426. */
  427. init = function () {
  428. var saCusBtns = null;
  429. if (sAction === 'Upd') {
  430. saCusBtns = [{
  431. id: 'Toolbar_Petition',
  432. value: 'common.SubmitPetition'// ╠common.SubmitPetition⇒提交簽呈╣
  433. }];
  434. }
  435. commonInit({
  436. PrgId: sProgramId,
  437. ButtonHandler: fnButtonHandler,
  438. Buttons: saCusBtns,
  439. GoTop: true
  440. });
  441. oValidator = $("#form_main").validate();
  442. $.whenArray([
  443. fnSetDeptDrop($('#Handle_DeptID')),
  444. setComplaintSourceDrop(),
  445. fnSetCoopAgent(),
  446. fnSetGroupUnit(),
  447. fnSetCustomers(),
  448. fnSetEpoDrop({
  449. CallBack: function (data) {
  450. sOptionHtml_ExhibitionName = createOptions(data, 'SN', 'ExhibitioShotName_TW');
  451. }
  452. }),
  453. fnSetFlowDrop({
  454. Flow_Type: '008',
  455. ShareTo: parent.UserID,
  456. CallBack: function (data) {
  457. $.each(data, function (idx, item) {
  458. var saFlows = $.parseJSON(item.Flows),
  459. saFlowsText = [],
  460. sFlowsText = '';
  461. $.each(saFlows, function (idx, flow) {
  462. var sFlowType = i18next.t('common.' + flow.SignedWay);
  463. if (flow.SignedWay !== 'flow1') {
  464. saFlowsText.push(sFlowType + '(' + Enumerable.From(flow.SignedMember).ToString(",", "$.name") + ')');
  465. }
  466. else {
  467. saFlowsText.push(Enumerable.From(flow.SignedMember).ToString(",", "$.name"));
  468. }
  469. });
  470. sFlowsText = saFlowsText.join(' → ');
  471. item.text = item.Flow_Name + ' - ' + (sFlowsText.length > 60 ? sFlowsText.substr(0, 60) + '...' : sFlowsText);
  472. });
  473. $('#FlowId').html(createOptions(data, 'Guid', 'text')).on('change', function () {
  474. var sFlowId = this.value;
  475. if (sFlowId) {
  476. CallAjax(ComFn.W_Com, ComFn.GetOne, {
  477. Type: '',
  478. Params: {
  479. checkflow: {
  480. Guid: sFlowId
  481. }
  482. }
  483. }, function (res) {
  484. if (res.d) {
  485. var oRes = $.parseJSON(res.d);
  486. oRes.Flows = $.parseJSON(oRes.Flows);
  487. oCurData.CheckOrder = oRes.Flows;
  488. oCurData.Flows_Lock = oRes.Flows_Lock;
  489. oCurData.Handle_Lock = oRes.Handle_Lock;
  490. /*Flag*/
  491. $("#Handle_DeptID").val(parent.UserInfo.DepartmentID);
  492. $("#Handle_Person").val(parent.UserInfo.MemberID).trigger('change');
  493. if (oRes.Flows_Lock === 'Y') {
  494. $(".checkordertoolbox").hide();
  495. }
  496. else {
  497. $(".checkordertoolbox").show();
  498. }
  499. if (oRes.Handle_Lock === 'Y') {
  500. $("#Handle_DeptID,#Handle_Person").attr('disabled', false);
  501. }
  502. else {
  503. $("#Handle_DeptID,#Handle_Person").removeAttr('disabled');
  504. }
  505. $("#jsGrid").jsGrid("loadData");
  506. }
  507. });
  508. }
  509. else {
  510. oCurData.CheckOrder = [];
  511. $(".checkordertoolbox").hide();
  512. $("#jsGrid").jsGrid("loadData");
  513. $("#Handle_DeptID,#Handle_Person").removeAttr('disabled');
  514. }
  515. });
  516. }
  517. }),
  518. fnSetUserDrop([
  519. {
  520. Select: $('#Handle_Person,#Payee'),
  521. Select2: true,
  522. ShowId: true,
  523. Action: sAction,
  524. CallBack: function (data) {
  525. saUsers = data;
  526. if (sAction === 'Add') {
  527. $('#Payee').val(parent.UserID);
  528. }
  529. }
  530. }
  531. ])
  532. ]).done(function () {
  533. fnGet();
  534. });
  535. $('#Handle_DeptID').on('change', function () {
  536. fnSetUserDrop([
  537. {
  538. Select: $('#Handle_Person'),
  539. DepartmentID: this.value,
  540. ShowId: true,
  541. Select2: true,
  542. Action: sAction
  543. }
  544. ]);
  545. });
  546. $('#Agent_Person').on('change', function () {
  547. oCurData.Agent_Person = this.value;
  548. });
  549. $('[name="PaymentType"]').on('click', function () {
  550. if (this.value === 'A') {
  551. $('#PaymentTime').removeAttr('required');
  552. }
  553. else {
  554. $('#PaymentTime').attr('required', true);
  555. }
  556. });
  557. $('.flowlink').on('click', function () {
  558. var oOption = {};
  559. oOption.SignedWay = this.id;
  560. oOption.Callback = function (data) {
  561. if (data.Users.length > 0) {
  562. var oFlow = {};
  563. if (data.FlowType === 'flow1') {
  564. $.each(data.Users, function (idx, user) {
  565. oFlow = {};
  566. oFlow.id = guid();
  567. oFlow.Order = oCurData.CheckOrder.length + 1;
  568. oFlow.SignedWay = data.FlowType;
  569. oFlow.SignedMember = [{
  570. id: user.id,
  571. name: user.name,
  572. deptname: user.deptname,
  573. jobname: user.jobname
  574. }];
  575. oCurData.CheckOrder.push(oFlow);
  576. });
  577. }
  578. else {
  579. var saSignedMember = [];
  580. $.each(data.Users, function (idx, user) {
  581. saSignedMember.push({
  582. id: user.id,
  583. name: user.name,
  584. deptname: user.deptname,
  585. jobname: user.jobname
  586. });
  587. });
  588. oFlow.id = guid();
  589. oFlow.Order = oCurData.CheckOrder.length + 1;
  590. oFlow.SignedWay = data.FlowType;
  591. oFlow.SignedMember = saSignedMember;
  592. oCurData.CheckOrder.push(oFlow);
  593. }
  594. oCurData.CheckOrder = releaseGridList(oCurData.CheckOrder);
  595. $("#jsGrid").jsGrid("loadData");
  596. }
  597. };
  598. oPenUserListPop(oOption);
  599. });
  600. $("#jsGrid").jsGrid({
  601. width: "100%",
  602. height: "auto",
  603. autoload: true,
  604. filtering: false,
  605. pageLoading: true,
  606. pageIndex: 1,
  607. pageSize: 10000,
  608. fields: [
  609. {
  610. name: "Order", title: 'common.Order', width: 50, align: "center",
  611. itemTemplate: function (val, item) {
  612. return val < 10 ? '0' + val : val;
  613. }
  614. },
  615. {
  616. name: "SignedWay", title: 'common.SignedWay', width: 120, align: "center",
  617. itemTemplate: function (val, item) {
  618. return i18next.t('common.' + val);
  619. }
  620. },
  621. {
  622. type: "Icon", width: 50, align: "center",
  623. itemTemplate: function (val, item) {
  624. var oIcon = {
  625. flow1: '<img src="../../images/flow_check.gif">',
  626. flow2: '<img src="../../images/flow_check.gif"><img src="../../images/flow_check.gif">',
  627. flow3: '<img src="../../images/flow_check.gif"><img src="../../images/flow_nocheck.gif">',
  628. flow4: '<img src="../../images/flow4.gif">'
  629. },
  630. sIcon = oIcon[item.SignedWay];
  631. if (item.Order !== oCurData.CheckOrder.length) {
  632. sIcon += '<br><img src="../../images/flow_arrow.gif" style="vertical-align:top;">'
  633. }
  634. return sIcon;
  635. }
  636. },
  637. {
  638. name: "SignedMember", title: 'common.SignedMember', width: 500,
  639. itemTemplate: function (val, item) {
  640. return Enumerable.From(val).ToString(",", "$.name");
  641. }
  642. },
  643. {
  644. type: "control", title: 'common.Action', width: 200,
  645. itemTemplate: function (val, item) {
  646. var oBtns = [$('<div>', { class: 'fa-item col-sm-3' }).append($('<i>', {
  647. class: 'glyphicon glyphicon-pencil' + (oCurData.Flows_Lock === 'Y' ? ' disabled' : ''),
  648. title: i18next.t('common.Edit'),// ╠common.Edit⇒編輯╣
  649. click: function () {
  650. if ($(this).hasClass('disabled')) { return false; }
  651. var oOption = {};
  652. oOption.SignedWay = item.SignedWay;
  653. oOption.SignedMember = item.SignedMember;
  654. oOption.Callback = function (data) {
  655. if (data.Users.length > 0) {
  656. var oFlow = {};
  657. if (data.FlowType === 'flow1') {
  658. $.each(data.Users, function (idx, user) {
  659. var oFlow = {};
  660. oFlow.id = guid();
  661. oFlow.Order = item.Order + idx;
  662. oFlow.SignedWay = data.FlowType;
  663. oFlow.SignedMember = [{
  664. id: user.id,
  665. name: user.name,
  666. deptname: user.deptname,
  667. jobname: user.jobname
  668. }];
  669. oCurData.CheckOrder.insert(item.Order + idx, oFlow);
  670. });
  671. }
  672. else {
  673. var saSignedMember = [];
  674. $.each(data.Users, function (idx, user) {
  675. saSignedMember.push({
  676. id: user.id,
  677. name: user.name,
  678. deptname: user.deptname,
  679. jobname: user.jobname
  680. });
  681. });
  682. oFlow.id = guid();
  683. oFlow.Order = item.Order;
  684. oFlow.SignedWay = data.FlowType;
  685. oFlow.SignedMember = saSignedMember;
  686. oCurData.CheckOrder.insert(item.Order, oFlow);
  687. }
  688. var iOrder = 1;
  689. $.each(oCurData.CheckOrder, function (idx, _data) {
  690. if (item.id !== _data.id) {
  691. _data.Order = iOrder;
  692. iOrder++;
  693. }
  694. });
  695. oCurData.CheckOrder = Enumerable.From(oCurData.CheckOrder).Where(function (e) { return e.id !== item.id; }).ToArray();
  696. oCurData.CheckOrder = releaseGridList(oCurData.CheckOrder);
  697. $("#jsGrid").jsGrid("loadData");
  698. }
  699. };
  700. oPenUserListPop(oOption);
  701. }
  702. })),
  703. $('<div>', { class: 'fa-item col-sm-3' }).append($('<i>', {
  704. class: 'glyphicon glyphicon-trash' + (oCurData.Flows_Lock === 'Y' ? ' disabled' : ''),
  705. title: i18next.t('common.Toolbar_Del'),// ╠common.Toolbar_Del⇒刪除╣
  706. click: function () {
  707. if ($(this).hasClass('disabled')) { return false; }
  708. var saNewList = Enumerable.From(oCurData.CheckOrder).Where(function (e) { return e.id !== item.id; }).ToArray();
  709. oCurData.CheckOrder = saNewList;
  710. $.each(oCurData.CheckOrder, function (idx, _data) {
  711. _data.Order = idx + 1;
  712. });
  713. oCurData.CheckOrder = releaseGridList(oCurData.CheckOrder);
  714. $("#jsGrid").jsGrid("loadData");
  715. }
  716. }))];
  717. if (oCurData.CheckOrder.length !== item.Order) {
  718. oBtns.push($('<div>', { class: 'fa-item col-sm-3' }).append($('<i>', {
  719. class: 'glyphicon glyphicon-arrow-down' + (oCurData.Flows_Lock === 'Y' ? ' disabled' : ''),
  720. title: i18next.t('common.Down'),// ╠common.Down⇒下移╣
  721. click: function () {
  722. if ($(this).hasClass('disabled')) { return false; }
  723. var sOrder = Enumerable.From(oCurData.CheckOrder).Where(function (e) { return e.id === item.id; }).ToString('', '$.Order'),
  724. iOrder = sOrder * 1;
  725. $.each(oCurData.CheckOrder, function (idx, _data) {
  726. if (iOrder === _data.Order) {
  727. _data.Order++;
  728. }
  729. else if ((iOrder + 1) === _data.Order) {
  730. _data.Order--;
  731. }
  732. });
  733. oCurData.CheckOrder = releaseGridList(oCurData.CheckOrder);
  734. $("#jsGrid").jsGrid("loadData");
  735. }
  736. })));
  737. }
  738. else {
  739. oBtns.push($('<div>', { class: 'fa-item col-sm-3' }));
  740. }
  741. if (1 !== item.Order) {
  742. oBtns.push($('<div>', { class: 'fa-item col-sm-3' }).append($('<i>', {
  743. class: 'glyphicon glyphicon-arrow-up' + (oCurData.Flows_Lock === 'Y' ? ' disabled' : ''),
  744. title: i18next.t('common.Up'),// ╠common.Up⇒上移╣
  745. click: function () {
  746. if ($(this).hasClass('disabled')) { return false; }
  747. var sOrder = Enumerable.From(oCurData.CheckOrder).Where(function (e) { return e.id === item.id; }).ToString('', '$.Order'),
  748. iOrder = sOrder * 1;
  749. $.each(oCurData.CheckOrder, function (idx, _data) {
  750. if (iOrder === _data.Order) {
  751. _data.Order--;
  752. }
  753. else if ((iOrder - 1) === _data.Order) {
  754. _data.Order++;
  755. }
  756. });
  757. oCurData.CheckOrder = releaseGridList(oCurData.CheckOrder);
  758. $("#jsGrid").jsGrid("loadData");
  759. }
  760. })));
  761. }
  762. return oBtns;
  763. }
  764. }
  765. ],
  766. controller: {
  767. loadData: function (args) {
  768. return {
  769. data: oCurData.CheckOrder,
  770. itemsCount: oCurData.CheckOrder.length //data.length
  771. };
  772. },
  773. insertItem: function (args) {
  774. },
  775. updateItem: function (args) {
  776. },
  777. deleteItem: function (args) {
  778. }
  779. }
  780. });
  781. };
  782. init();
  783. };
  784. require(['base', 'select2', 'jsgrid', 'formatnumber', 'filer', 'common_eip', 'util'], fnPageInit);