editTableGroup.js 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. function submit(data) {
  2. //保存驱动配置
  3. doPoster("/tableGroup/edit", data, function (data) {
  4. if (data.success == true) {
  5. bootGrowl("保存表映射关系成功!", "success");
  6. backMappingPage($("#tableGroupSubmitBtn"));
  7. } else {
  8. bootGrowl(data.resultValue, "danger");
  9. }
  10. });
  11. }
  12. // 初始化映射关系参数
  13. function initFieldMappingParams(){
  14. // 生成JSON参数
  15. var row = [];
  16. var $fieldMappingList = $("#fieldMappingList");
  17. $fieldMappingList.find("tr").each(function(k,v){
  18. var $pk = $(this).find("td:eq(2)").html();
  19. row.push({
  20. "source":$(this).find("td:eq(0)").text(),
  21. "target":$(this).find("td:eq(1)").text(),
  22. "pk":($pk != "" || $.trim($pk).length > 0)
  23. });
  24. });
  25. $("#fieldMapping").val(JSON.stringify(row));
  26. }
  27. // 获取选择的CheckBox[value]
  28. function getCheckedBoxSize($checkbox){
  29. var checked = [];
  30. $checkbox.each(function(){
  31. if($(this).prop('checked')){
  32. checked.push($(this).attr("id"));
  33. }
  34. });
  35. return checked;
  36. }
  37. // 绑定删除表字段复选框事件
  38. function bindFieldMappingCheckBoxClick(){
  39. var $checkboxAll = $('.fieldMappingDeleteCheckboxAll');
  40. var $checkbox = $('.fieldMappingDeleteCheckbox');
  41. var $delBtn = $("#fieldMappingDelBtn");
  42. $checkboxAll.iCheck({
  43. checkboxClass: 'icheckbox_square-red',
  44. labelHover: false,
  45. cursor: true
  46. }).on('ifChecked', function (event) {
  47. $checkbox.iCheck('check');
  48. }).on('ifUnchecked', function (event) {
  49. $checkbox.iCheck('uncheck');
  50. }).on('ifChanged', function (event) {
  51. $delBtn.prop('disabled', getCheckedBoxSize($('.fieldMappingDeleteCheckbox')).length < 1);
  52. });
  53. // 初始化icheck插件
  54. $checkbox.iCheck({
  55. checkboxClass: 'icheckbox_square-red',
  56. cursor: true
  57. }).on('ifChanged', function (event) {
  58. // 阻止tr触发click事件
  59. event.stopPropagation();
  60. event.cancelBubble=true;
  61. $delBtn.prop('disabled', getCheckedBoxSize($checkbox).length < 1);
  62. });
  63. }
  64. // 绑定字段映射表格点击事件
  65. function bindFieldMappingListClick(){
  66. // 行双击事件
  67. var $tr = $("#fieldMappingList tr");
  68. $tr.unbind("dblclick");
  69. $tr.bind('dblclick', function () {
  70. var $pk = $(this).find("td:eq(2)");
  71. var $text = $pk.html();
  72. var isPk = $text == "" || $.trim($text).length == 0;
  73. $pk.html(isPk ? '<i title="主键" class="fa fa-key fa-fw fa-rotate-90 text-warning"></i>' : '');
  74. initFieldMappingParams();
  75. });
  76. }
  77. // 绑定下拉选择事件自动匹配相似字段事件
  78. function bindTableFieldSelect(){
  79. var $sourceSelect = $("#sourceTableField");
  80. var $targetSelect = $("#targetTableField");
  81. // 绑定数据源下拉切换事件
  82. $sourceSelect.on('changed.bs.select',function(e){
  83. $targetSelect.selectpicker('val', $(this).selectpicker('val'));
  84. });
  85. bindFieldMappingAddClick($sourceSelect, $targetSelect)
  86. }
  87. // 绑定添加字段映射点击事件
  88. function bindFieldMappingAddClick($sourceSelect, $targetSelect){
  89. var $btn = $("#fieldMappingAddBtn");
  90. $btn.bind('click', function(){
  91. var sField = $sourceSelect.selectpicker("val");
  92. var tField = $targetSelect.selectpicker("val");
  93. sField = sField == null ? "" : sField;
  94. tField = tField == null ? "" : tField;
  95. // 非空检查
  96. if(sField == "" && tField == ""){
  97. bootGrowl("至少有一个表字段.", "danger");
  98. return;
  99. }
  100. // 检查重复字段
  101. var repeated = false;
  102. var $fieldMappingList = $("#fieldMappingList");
  103. var $tr = $fieldMappingList.find("tr");
  104. $tr.each(function(k,v){
  105. var sf = $(this).find("td:eq(0)").text();
  106. var tf = $(this).find("td:eq(1)").text();
  107. if(repeated = (sField==sf && tField==tf)){
  108. bootGrowl("映射关系已存在.", "danger");
  109. return false;
  110. }
  111. });
  112. if(repeated){ return; }
  113. var index = $tr.size();
  114. var trHtml = "<tr title='双击设置/取消主键'><td>" + sField + "</td><td>" + tField + "</td><td></td><td><input id='fieldIndex_"+ (index + 1) +"' type='checkbox' class='fieldMappingDeleteCheckbox' /></td></tr>";
  115. $fieldMappingList.append(trHtml);
  116. initFieldMappingParams();
  117. bindFieldMappingListClick();
  118. bindFieldMappingCheckBoxClick();
  119. bindFieldMappingDelClick();
  120. });
  121. }
  122. // 绑定删除字段映射点击事件
  123. function bindFieldMappingDelClick(){
  124. var $fieldMappingDelBtn = $("#fieldMappingDelBtn");
  125. $fieldMappingDelBtn.unbind("click");
  126. $fieldMappingDelBtn.click(function () {
  127. var ids = getCheckedBoxSize($('.fieldMappingDeleteCheckbox'));
  128. if (ids.length > 0) {
  129. var len = ids.length;
  130. for(i = 0; i < len; i++){
  131. $("#" + ids[i]).parent().parent().parent().remove();
  132. }
  133. $fieldMappingDelBtn.prop('disabled', true);
  134. initFieldMappingParams();
  135. }
  136. });
  137. }
  138. // 返回驱动配置页面
  139. function backMappingPage($this){
  140. doLoader('/mapping/page/edit?id=' + $this.attr("mappingId"));
  141. }
  142. $(function() {
  143. // 绑定表字段关系点击事件
  144. initFieldMappingParams();
  145. // 绑定下拉选择事件自动匹配相似字段事件
  146. bindTableFieldSelect();
  147. // 绑定删除表字段映射事件
  148. bindFieldMappingCheckBoxClick();
  149. bindFieldMappingListClick();
  150. bindFieldMappingDelClick();
  151. // 初始化select插件
  152. $(".select-control").selectpicker({
  153. "title":"请选择",
  154. "actionsBox":true,
  155. "liveSearch":true,
  156. "selectAllText":"全选",
  157. "deselectAllText":"取消全选",
  158. "noneResultsText":"没有找到 {0}",
  159. "selectedTextFormat":"count > 10"
  160. });
  161. //保存
  162. $("#tableGroupSubmitBtn").click(function () {
  163. var $form = $("#tableGroupModifyForm");
  164. if ($form.formValidate() == true) {
  165. var data = $form.serializeJson();
  166. submit(data);
  167. }
  168. });
  169. // 返回按钮,跳转至上个页面
  170. $("#tableGroupBackBtn").bind('click', function(){
  171. backMappingPage($(this));
  172. });
  173. });