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.

201 lines
7.6 KiB

  1. 'use strict';
  2. //const { Console } = require("node:console");
  3. var fnPageInit = function () {
  4. var canDo = new CanDo({
  5. //當前程式所有ID名稱集合
  6. idKeys: ['OrgID', 'CityID', 'LangType'],
  7. //當前程式所有參數名稱集合
  8. paramKeys: ['CityID', 'LangType'],
  9. /**
  10. * @param {Object} pargs CanDo 對象*/
  11. validRulesCus: function (pargs) {
  12. $.validator.addMethod("cityclassidrule", function (value) { //驗證城市編號是否重複
  13. var bRetn = true;
  14. if (value) {
  15. g_api.ConnectLite(pargs.ProgramId, 'QueryOrder',
  16. {
  17. CountryID: $('#CountryID').val(),
  18. CityID: value
  19. },
  20. function (res) {
  21. if (res.RESULT && res.DATA.rel > 0) {
  22. bRetn = false;
  23. }
  24. }, null, false);
  25. }
  26. return bRetn;
  27. });
  28. },
  29. //驗證規則
  30. validRules: function (pargs) {
  31. return {
  32. onfocusout: false,
  33. rules: {
  34. CityID: { cityclassidrule: pargs.action === 'add' ? true : false },
  35. },
  36. messages: {
  37. CityID: { cityclassidrule: i18next.t("message.Data_Repeat") },
  38. }
  39. };
  40. },
  41. //getOneBack: function (pargs, data) {
  42. // var oRes = data;
  43. // disableInput(pargs._form, '#CityID', false);
  44. //},
  45. /**
  46. * 修改資料
  47. * @param {Object} pargs CanDo 對象
  48. * @param {Object} data 當前修改的資料
  49. */
  50. //getUpdateParams: function (pargs, data) {
  51. // data = pargs.options.getInsertParams(pargs, data);
  52. // return data;
  53. //},
  54. //getInsertParams: function (pargs, data) {
  55. // data.RegionID = $('#RegionID').val();
  56. // data.CountryID = $('#CountryID').val();
  57. // data.CityID = $('#CityID').val();
  58. // console.log("data.RegionID" + ": " + data.RegionID);
  59. // console.log("data.CountryID" + ": " + data.CountryID);
  60. // console.log("data.CityID" + ": " + data.CityID);
  61. // return data;
  62. //},
  63. /**
  64. * @param {Object} pargs CanDo 對象*/
  65. pageInit: function (pargs) {
  66. var postArray = [];
  67. if (pargs.action === 'upd') {
  68. $('#CityID', '#CountryID').prop('disabled', true);
  69. postArray.push(pargs._getOne());
  70. }
  71. postArray.push(fnLanguageDrop());
  72. $.whenArray(postArray).done(function (res) {
  73. if (pargs.action === 'upd' && res[0].RESULT) {
  74. var oRes = res[0].DATA.rel;
  75. pargs._setFormVal(oRes);
  76. if (oRes.LangType) {
  77. $('#LangType').val(oRes.LangType);
  78. fnSetRegionIDdrop().done(function () {
  79. $('#RegionID').val(oRes.RegionID);
  80. fnCountryDrop().done(function () {
  81. $('#CountryID').val(oRes.CountryID);
  82. fnSetOrderByValueDrop().done(function () {
  83. $('#OrderByValue').val(oRes.OrderByValue);
  84. });
  85. });
  86. });
  87. pargs._setFormVal(oRes);
  88. }
  89. else {
  90. pargs._setFormVal(oRes);
  91. }
  92. }
  93. });
  94. $('#RegionID').select2();
  95. $('#CountryID').select2();
  96. }
  97. }),
  98. /**
  99. * @return {Object} Ajax 物件*/
  100. fnCountryDrop = function () {
  101. var data = {
  102. RegionID: $('#RegionID').val(),
  103. LangType: $('#LangType').val(),
  104. };
  105. if ($('#RegionID').val()) {
  106. return g_api.ConnectLite(canDo.ProgramId, "QueryCountryList", data,
  107. function (res) {
  108. if (res.RESULT) {
  109. var saList = res.DATA.rel;
  110. if (saList.length > 0) {
  111. var sOptions = createOptions(saList, 'CountryID', 'CountryName', false);
  112. $('#CountryID').html(sOptions).on('change', function () {
  113. fnSetOrderByValueDrop();
  114. $('#OrderByValue').val("");
  115. });
  116. }
  117. }
  118. });
  119. }
  120. },
  121. /**
  122. * @return {Object} Ajax 物件*/
  123. fnSetRegionIDdrop = function () {
  124. return g_api.ConnectLite(canDo.ProgramId, "QueryRegionList", {
  125. LangType: $("#LangType").val()
  126. },
  127. function (res) {
  128. if (res.RESULT) {
  129. var regionList = res.DATA.rel;
  130. $('#RegionID').html(createOptions(regionList, 'RegionID', 'RegionName', false)).on('change', function () {
  131. console.log($('#RegionID').val());
  132. $('#CountryID').empty();
  133. if ($('#RegionID').val()) { //監聽RegionID,若RegionID值改變,執行fnCountryDrop()
  134. $('#CountryID').val("");
  135. fnCountryDrop(); //選取不同的洲別,國家下拉選單也會出現相應的國家,如選擇亞洲,國家下拉選單內都會是亞洲的國家
  136. }
  137. });
  138. }
  139. });
  140. },
  141. //排序下拉選單
  142. fnSetOrderByValueDrop = function () {
  143. var data = {
  144. CountryID: $("#CountryID").val(), //排序會因選擇不同的CountryID改變
  145. LangType: $('#LangType').val()
  146. };
  147. return g_api.ConnectLite(canDo.ProgramId, "QueryOrder",data,
  148. function (res) {
  149. if (res.RESULT) {
  150. var iCount = res.DATA.rel; //取得目前的城市資料總筆數
  151. if (canDo.action === 'add') { //若為新增
  152. iCount++; //城市資料總筆數+1
  153. }
  154. $('#OrderByValue').html(createOptions(iCount));
  155. if (canDo.action === 'add') {
  156. $('#OrderByValue').val(iCount);
  157. }
  158. }
  159. });
  160. },
  161. //語系下拉選單
  162. fnLanguageDrop = function () {
  163. return g_api.ConnectLite(canDo.ProgramId, "GetLanguage",
  164. {},
  165. function (res) {
  166. if (res.RESULT) {
  167. var saList = res.DATA.rel;
  168. $('#LangType').html(createOptions(saList, 'LanguageID', 'LanguageName', false)).on('change', function () {
  169. if ($('#LangType').val()) { //監聽RegionID,若RegionID值改變,執行fnSetOrderByValueDrop()
  170. fnSetRegionIDdrop();
  171. }
  172. }).select2();
  173. }
  174. });
  175. };
  176. };
  177. require(['base', 'cando', 'select2', 'jsgrid'], fnPageInit);