mapChooser.js 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. /**
  2. * @author xiacj
  3. *
  4. * @date 2020年02月25日 07:54:44
  5. *
  6. * layui-映射关系选择插件
  7. *
  8. * 1。两个输入参数,第一个参数定义该插件的依赖插件;第二个参数是回调函数,编写我们自定义插件的业务逻辑
  9. * 2.返回插件,调用exports函数,两个参数分别是 插件名称和插件对象
  10. *
  11. */
  12. layui.define(['jquery','form' ],function(exports){
  13. "use strict";
  14. var $ = layui.jquery,form=layui.form;
  15. var mapChooser = function(){
  16. };
  17. //组件初始化方法
  18. mapChooser.prototype.init = function(data){
  19. initDiv(data.body.leftArr,".ag-map-left");
  20. if($(".ag-map-middle").length > 0){
  21. initDiv(data.body.middleArr,".ag-map-middle");
  22. }
  23. initRightDiv(data.body.rightArr,".ag-map-right");
  24. buildEvent();
  25. buildReturnList();
  26. }
  27. function initDiv(arr,selector) {
  28. var ol = $('<ol class="dd-list"></ol>');
  29. for(var i=0; i < arr.length; i++){
  30. var li = $('<li class="dd-item" ></div>');
  31. var div=$('<div class="dd-handle">'+arr[i].optCode+"-"+arr[i].optName+'</div>');
  32. li.append(div);
  33. ol.append(li)
  34. }
  35. $(selector).append(ol);
  36. }
  37. function initRightDiv(arr,selector) {
  38. var ol = $('<ol class="dd-list"></ol>');
  39. for(var i=0; i < arr.length; i++){
  40. var li = $('<li class="dd-item" ></div>');
  41. var closeBtn = '<i class="layui-icon layui-icon-delete " style="font-size: 30px; color:red ;float:right;margin-top:0px;"></i> ';
  42. var div;
  43. if($(".ag-map-middle").length > 0){
  44. div=$('<div class="dd-handle"><span>'+arr[i].sourceCode+"-"+arr[i].sourceCodeName+'||'+arr[i].targetCode+"-"+arr[i].targetCodeName+'</span>'+closeBtn+'</div>');
  45. }
  46. if($(".ag-map-input").length > 0){
  47. div=$('<div class="dd-handle"><span>'+arr[i].sourceCode+"-"+arr[i].sourceCodeName+"-"+arr[i].targetCode+'</span>'+closeBtn+'</div>');
  48. }
  49. li.append(div);
  50. ol.append(li)
  51. }
  52. $(selector).append(ol);
  53. }
  54. function buildEvent() {
  55. $(".dd").delegate('li', 'click', function() {
  56. $(this).parents("ol").find("li").removeClass("layui-this");
  57. $(this).addClass('layui-this');
  58. });
  59. $(".left-move i").click(function() {
  60. var rightli = $('<li class="dd-item" ></div>');
  61. var closeBtn = '<i class="layui-icon layui-icon-delete " style="font-size: 30px; color:red ;float:right;margin-top:0px;"></i> ';
  62. var rightDiv;
  63. var middleHtml;
  64. var leftSelect = $(".ag-map-left li.layui-this ");
  65. if (leftSelect.length == 0) {
  66. util.showDialog("请选择标准参数!", 0);
  67. return;
  68. }
  69. var leftHtml = leftSelect.find(".dd-handle").html();
  70. if($(".ag-map-middle").length > 0){
  71. var middleSelect = $(".ag-map-middle li.layui-this ");
  72. if (middleSelect.length == 0) {
  73. util.showDialog("请选择模板参数!", 0);
  74. return;
  75. }
  76. middleHtml = middleSelect.find(".dd-handle").html();
  77. rightDiv=$('<div class="dd-handle"><span>'+leftHtml+'||'+middleHtml+'</span>'+closeBtn+'</div>');
  78. }
  79. if($(".ag-map-input").length > 0){
  80. middleHtml =$(".ag-map-input input").val();
  81. if(util.isNull(middleHtml))
  82. {
  83. util.showDialog("转换格式不能为空!", 0);
  84. return;
  85. }
  86. rightDiv=$('<div class="dd-handle"><span>'+leftHtml+'-'+middleHtml+'</span>'+closeBtn+'</div>');
  87. }
  88. leftSelect.remove();
  89. rightli.append(rightDiv);
  90. if ($(".ag-map-right>ol").length == 0) {
  91. $(".ag-map-right").append($('<ol class="dd-list"></ol>'));
  92. }
  93. $(".ag-map-right ol ").append(rightli);
  94. //将数据存入input
  95. buildReturnList();
  96. });
  97. $(".ag-map-right").delegate('.layui-icon-delete', 'click', function() {
  98. var parentLi = $(this).parent().parent("li");
  99. var spanHtml = $(this).parent().find("span").eq(0).html();
  100. parentLi.remove();
  101. var leftOneHtml;
  102. if($(".ag-map-middle").length > 0){
  103. var strs=spanHtml.split("||");
  104. leftOneHtml=strs[0];
  105. }
  106. if($(".ag-map-input").length > 0){
  107. var strs=spanHtml.split("-");
  108. leftOneHtml=strs[0]+"-"+strs[1];
  109. }
  110. var leftOneli = $('<li class="dd-item" ></div>');
  111. var leftOneDiv=$('<div class="dd-handle">'+leftOneHtml+'</div>');
  112. leftOneli.append(leftOneDiv);
  113. $(".ag-map-left ol").append(leftOneli);
  114. buildReturnList();
  115. });
  116. }
  117. function buildReturnList(){
  118. var record = [];
  119. $.each($(".ag-map-right li div"), function(i, item) {
  120. var oneRightHtml=$(item).find("span").eq(0).html();
  121. record.push(oneRightHtml);
  122. });
  123. $("input[name='returnList']").val(record);
  124. }
  125. var mapChooser = new mapChooser();
  126. exports("mapChooser", mapChooser);
  127. });