diff --git a/common/src/main/java/ink/wgink/common/rpc/rest/request/RestRemoteRequest.java b/common/src/main/java/ink/wgink/common/rpc/rest/request/RestRemoteRequest.java index 38c06b6c..abd8d236 100644 --- a/common/src/main/java/ink/wgink/common/rpc/rest/request/RestRemoteRequest.java +++ b/common/src/main/java/ink/wgink/common/rpc/rest/request/RestRemoteRequest.java @@ -200,7 +200,9 @@ public class RestRemoteRequest { } else { httpEntity = new HttpEntity(JSONObject.toJSONString(jsonBody), httpHeaders); } - } else if (!fileMap.isEmpty() || !fileInputStreamMap.isEmpty() || !formVariableParams.isEmpty()) { + } else if ((fileMap != null && !fileMap.isEmpty()) || + (fileInputStreamMap != null && !fileInputStreamMap.isEmpty()) || + (formVariableParams != null && !formVariableParams.isEmpty())) { HttpHeaders httpHeaders = getHttpHeaders(headerMap); MultiValueMap multiValueMap = new LinkedMultiValueMap<>(); if (!fileMap.isEmpty()) { diff --git a/common/src/main/resources/static/assets/js/common-util.js b/common/src/main/resources/static/assets/js/common/html-util.js similarity index 96% rename from common/src/main/resources/static/assets/js/common-util.js rename to common/src/main/resources/static/assets/js/common/html-util.js index 7c6854b9..7a18498d 100644 --- a/common/src/main/resources/static/assets/js/common-util.js +++ b/common/src/main/resources/static/assets/js/common/html-util.js @@ -2,7 +2,7 @@ * 通用工具类 * @constructor */ -function CommonUtil() { +function HtmlUtil() { /** * 获取html文本 diff --git a/common/src/main/resources/static/assets/js/common/layui-input-tree.js b/common/src/main/resources/static/assets/js/common/layui-input-tree.js new file mode 100644 index 00000000..c8065a09 --- /dev/null +++ b/common/src/main/resources/static/assets/js/common/layui-input-tree.js @@ -0,0 +1,266 @@ +function LayuiInputTree(layui) { + var $ = layui.$; + var layer = layui.layer; + var ztree = layui.ztree; + var restAjax = layui.restajax; + // 样式 + var style = ` + + + ` + // 添加样式 + $(document.head).append(style); + + /** + * 初始化单选 + * @param opt + */ + this.initSelect = function (opt) { + var zTreeUrl = opt.zTreeUrl; + if (!zTreeUrl) { + return; + } + var onConfirm = opt.onConfirm; + var onClear = opt.onClear; + var id = opt.id; + var inputDomId = '#' + id; + var zTree; + var boxDomId = inputDomId + 'Box'; + var zTreeBoxId = inputDomId + 'ZTreeBox'; + var confirmBtnId = inputDomId + 'ConfirmBtn'; + var clearBtnId = inputDomId + 'ClearBtn'; + var inputDom = $(inputDomId); + var inputParentDom = inputDom.parent(); + var selectedNode = null; + inputParentDom.css('position', 'relative'); + inputDom.attr('readonly', ''); + inputDom.css('cursor', 'pointer'); + inputDom.after(` +
+
+
+
+ + +
+
+
+ `); + + // 初始化事件 + function initEvent() { + $(document).on('click', inputDomId, function () { + var boxDom = $(boxDomId); + if (boxDom.is(':hidden')) { + boxDom.show(); + } else { + boxDom.hide(); + } + }) + // 确认事件 + $(document).on('click', confirmBtnId, function () { + if (onConfirm) { + onConfirm(zTree, selectedNode) + $(inputDomId).click(); + } + }) + // 清空事件 + $(document).on('click', clearBtnId, function () { + selectedNode = null; + $(inputDomId).val(''); + zTree.cancelSelectedNode(); + if (onClear) { + onClear(zTree); + $(inputDomId).click(); + } + + }) + } + + // 初始化zTree + function initZTree() { + var setting = { + async: { + enable: true, + autoLoad: true, + type: 'get', + url: zTreeUrl, + autoParam: ['id'], + otherParam: {}, + dataFilter: function (treeId, parentNode, childNodes) { + if (!childNodes) return null; + for (var i = 0, l = childNodes.length; i < l; i++) { + childNodes[i].name = childNodes[i].name.replace(/\.n/g, '.'); + } + return childNodes; + } + }, + callback: { + onClick: function (event, treeId, treeNode) { + selectedNode = new SelectedNode(); + selectedNode.id = treeNode.id; + selectedNode.name = treeNode.name; + selectedNode.pId = treeNode.pId; + $(inputDomId).val(treeNode.name); + return false; + } + } + } + zTree = $.fn.zTree.init($(zTreeBoxId), setting); + } + + initZTree(); + initEvent(); + } + + + /** + * 初始化多选 + * @param opt + */ + this.initMultiSelect = function (opt) { + var zTreeUrl = opt.zTreeUrl; + if (!zTreeUrl) { + return; + } + var onConfirm = opt.onConfirm; + var onClear = opt.onClear; + var selectedDatas = opt.selectedDatas; + var checkboxType = opt.checkboxType; + var id = opt.id; + var inputDomId = '#' + id; + var zTree; + var boxDomId = inputDomId + 'Box'; + var zTreeBoxId = inputDomId + 'ZTreeBox'; + var confirmBtnId = inputDomId + 'ConfirmBtn'; + var clearBtnId = inputDomId + 'ClearBtn'; + var inputDom = $(inputDomId); + var inputParentDom = inputDom.parent(); + var selectedNodesObj = {}; + if (selectedDatas && selectedDatas.length > 0) { + $.each(selectedDatas, function (index, item) { + selectedNodesObj[item.id] = item; + }) + } + inputParentDom.css('position', 'relative'); + inputDom.attr('readonly', ''); + inputDom.css('cursor', 'pointer'); + inputDom.after(` +
+
+
+
+ + +
+
+
+ `); + + // 初始化事件 + function initEvent() { + $(document).on('click', inputDomId, function () { + var boxDom = $(boxDomId); + if (boxDom.is(':hidden')) { + boxDom.show(); + } else { + boxDom.hide(); + } + }) + // 确认事件 + $(document).on('click', confirmBtnId, function () { + if (onConfirm) { + var selectedNodes = []; + for(var key in selectedNodesObj) { + selectedNodes.push(selectedNodesObj[key]); + } + onConfirm(zTree, selectedNodes) + $(inputDomId).click(); + } + }) + // 清空事件 + $(document).on('click', clearBtnId, function () { + selectedNodesObj = {}; + $(inputDomId).val(''); + zTree.checkAllNodes(false); + if (onClear) { + onClear(zTree); + $(inputDomId).click(); + } + }) + } + + // 初始化zTree + function initZTree() { + var setting = { + async: { + enable: true, + autoLoad: true, + type: 'get', + url: zTreeUrl, + autoParam: ['id'], + otherParam: {}, + dataFilter: function (treeId, parentNode, childNodes) { + if (!childNodes) return null; + for (var i = 0, l = childNodes.length; i < l; i++) { + childNodes[i].name = childNodes[i].name.replace(/\.n/g, '.'); + } + return childNodes; + } + }, + check: { + enable: true, + chkboxType: checkboxType ? checkboxType : {'Y': 'ps', 'N': 'ps'}, + chkStyle: 'checkbox' + }, + callback: { + onAsyncSuccess: function (event, treeId, treeNode) { + // 加载完默认勾选 + for (var key in selectedNodesObj) { + var node = zTree.getNodeByParam('id', key); + if (!node) { + return; + } + zTree.checkNode(node, true, true); + } + }, + onCheck: function (event, treeId, treeNode) { + if (treeNode.checked) { + var selectedNode = new SelectedNode(); + selectedNode.id = treeNode.id; + selectedNode.name = treeNode.name; + selectedNode.pId = treeNode.pId; + selectedNodesObj[treeNode.id] = selectedNode; + } else { + delete selectedNodesObj[treeNode.id]; + } + var names = ''; + for (var key in selectedNodesObj) { + if (names != '') { + names += ','; + } + names += selectedNodesObj[key].name; + } + $(inputDomId).val(names); + return false; + } + } + } + zTree = $.fn.zTree.init($(zTreeBoxId), setting); + } + + initZTree(); + initEvent(); + } + + function SelectedNode() { + this.id = null; + this.name = null; + this.pId = null; + } + +} \ No newline at end of file