From e91dc0e71b3627ff761b3a9afb9ef0194d87d748 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B8=B8=E6=9C=9D=E8=BE=89?= Date: Thu, 8 Sep 2022 19:38:06 +0800 Subject: [PATCH 1/3] =?UTF-8?q?Tab=20=E5=AE=8C=E5=96=84=E5=85=B3=E9=97=ADt?= =?UTF-8?q?ab=E6=96=B9=E6=B3=95=20=E5=88=B7=E6=96=B0=E6=A0=91=E6=B8=85?= =?UTF-8?q?=E9=99=A4tab=E7=BC=93=E5=AD=98=20=E5=B7=A5=E4=BD=9C=E6=B5=81=20?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E3=80=81=E4=B8=8B=E8=BD=BDsvg=E3=80=81?= =?UTF-8?q?=E9=A2=84=E8=A7=88=E7=9B=91=E5=90=AC=E5=99=A8=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/js/module/editor/resource_tree.js | 749 +++++++++++++++++- .../src/fast-develop/src/js/module/tab.js | 22 +- .../src/js/module/workflow/workflow_design.js | 67 +- 3 files changed, 785 insertions(+), 53 deletions(-) diff --git a/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/editor/resource_tree.js b/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/editor/resource_tree.js index 5632abc..4cc6e4b 100644 --- a/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/editor/resource_tree.js +++ b/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/editor/resource_tree.js @@ -1,8 +1,8 @@ -layui.define(['element', 'api', 'amis', 'schema', 'listener', 'api', 'jqgrid', 'open_domain', +layui.define(['element', 'api', 'amis', 'schema', 'listener', 'api', 'jqgrid', 'open_domain', -'domain_design','workflow_design', 'domain_design_vo','brms_design','edropdown', 'form', 'resource_content', 'ztree', 'resource_properties','fast_config', 'utils', 'schema_render', 'resource_tabs' + 'domain_design','workflow_design', 'domain_design_vo','brms_design','edropdown', 'form', 'resource_content', 'ztree', 'resource_properties','fast_config', 'utils', 'schema_render', 'resource_tabs' ], function(exports) { - "use strict"; + "use strict"; @@ -152,7 +152,7 @@ layui.define(['element', 'api', 'amis', 'schema', 'listener', 'api', 'jqgrid', ' api.post({ enableRootPath: true, type: "POST", - url: "schemas/" + metaType, + url: "schemas/" + metaType, data: {path:path}, async: false, success: function(data){ @@ -305,6 +305,7 @@ layui.define(['element', 'api', 'amis', 'schema', 'listener', 'api', 'jqgrid', ' } function reloadResource(){ + resource_tabs_obj.option.tabIdContentFn = {} treeObj.refresh(); //加载树 treeconf(utils.contextData.trees_settings[utils.contextData.currentTreeId]); @@ -313,7 +314,7 @@ layui.define(['element', 'api', 'amis', 'schema', 'listener', 'api', 'jqgrid', ' function selectedNode(data){ //1、刷新树,渲染追加新增的节点 reloadResource(); - // 2、根据参数获取树节点 + // 2、根据参数获取树节点 let treeId = treeObj.option.elem.slice(1); var tree = $.fn.zTree.getZTreeObj(treeId); @@ -325,7 +326,7 @@ layui.define(['element', 'api', 'amis', 'schema', 'listener', 'api', 'jqgrid', ' //单击事件 tree.setting.callback.onClick(event,treeId,node); } - + } function selectedPath(tree, path) { @@ -428,11 +429,11 @@ layui.define(['element', 'api', 'amis', 'schema', 'listener', 'api', 'jqgrid', ' createMetaData(); } - /** - * Button component - * */ - var MOD_NAME = 'resource_tree', - $ = layui.jquery, + /** + * Button component + * */ + var MOD_NAME = 'resource_tree', + $ = layui.jquery, contextmenuData, contentElem, elem, @@ -520,28 +521,28 @@ layui.define(['element', 'api', 'amis', 'schema', 'listener', 'api', 'jqgrid', ' }) listener.registerResourceTreeClickListener('extention_resourceTreeClickListener', extention_resourceTreeClickListener); - + } /** * 扩展_单击树监听器 - * @param {} event - * @param {*} treeId - * @param {*} treeNode + * @param {} event + * @param {*} treeId + * @param {*} treeNode */ - function extention_resourceTreeClickListener(event, treeId, treeNode, option, pearBody, resource_tabs_obj){ + function extention_resourceTreeClickListener(event, treeId, treeNode, option, pearBody, resource_tabs_obj){ var onClickListener = option.onClickListener; - + if(onClickListener && typeof onClickListener === 'function'){ onClickListener(event, treeId, treeNode); } } /** - * Button start loading + * Button start loading * 加载树 - * */ + * */ function treeconf(option){ registerListeners(); @@ -583,11 +584,709 @@ layui.define(['element', 'api', 'amis', 'schema', 'listener', 'api', 'jqgrid', ' var onClickListener = option.onClickListener; if(onClickListener && typeof onClickListener === 'function'){ - // if(treeClickListener && typeof treeClickListener === 'function'){ + // if(treeClickListener && typeof treeClickListener === 'function'){ onClickListener(event, treeId, treeNode); } $.each(listener.getResourceTreeClickListeners(), function(index, listener){ + layui.define(['element', 'api', 'amis', 'schema', 'listener', 'api', 'jqgrid', 'open_domain', + + 'domain_design','workflow_design', 'domain_design_vo','brms_design','edropdown', 'form', 'resource_content', 'ztree', 'resource_properties','fast_config', 'utils', 'schema_render', 'resource_tabs' + ], function(exports) { + "use strict"; + + + + function getMetaPath(value){ + var path; + if(contextmenuData.data.path===null || contextmenuData.data.path===''){ + path = value; + }else{ + path = contextmenuData.data.path + "#/" + value; + } + return path; + } + + /** + * 创建文件 + * @param path + */ + function createMetaData(metaType, path){ + function send(path){ + api.post({ + enableRootPath: true, + url: "schemas/" + metaType + "/fields", + data: {path:path}, + async: false, + success: function(data){ + selectedNode({ + id: path + }) + } + }); + } + + + layer.prompt({ + formType: 0, + value: '', + title: '请输入文件名称', + area: ['200px', '20px'] //自定义文本域宽高 + }, function(value, index, elem){ + var path = getMetaPath("fields/" + value); + send(path); + layer.close(index); + }); + } + + /** + * 启用 + * @param path + */ + function enable(metaType, path){ + function send(){ + api.put({ + enableRootPath: true, + url: "schemas/" + metaType + "/enable", + data: {path:path}, + async: false, + success: function(data){ + selectedNode({ + id: path + }) + } + }); + } + + + layer.confirm('是否确认该操作?', { + btn: ['确认', '取消'] + }, function(index, layero){ + send(); + layer.close(index); + }, function(index){ + layer.close(index); + }); + } + + /** + * 启用 + * @param path + */ + function disable(metaType, path){ + function send(){ + api.put({ + enableRootPath: true, + url: "schemas/" + metaType + "/disable", + data: {path:path}, + async: false, + success: function(data){ + selectedNode({ + id: path + }) + } + }); + } + + + layer.confirm('是否确认该操作?', { + btn: ['确认', '取消'] + }, function(index, layero){ + send(); + layer.close(index); + }, function(index){ + layer.close(index); + }); + + } + + /** + * 重命名 + * @param path + */ + function rename(name, path){ + function send(name){ + api.put({ + enableRootPath: true, + url: "resource/rename/" + name, + data: {path:path}, + async: false, + success: function(data){ + selectedNode({ + id: data + }) + } + }); + } + + + + layer.prompt({ + formType: 0, + value: name, + title: '请输入文件名称', + area: ['200px', '20px'] //自定义文本域宽高 + }, function(value, index, elem){ + send(value); + layer.close(index); + }); + } + + + + /** + * 创建文件 + * @param path + */ + function createFile(metaType){ + function send(path){ + api.post({ + enableRootPath: true, + type: "POST", + url: "schemas/" + metaType, + data: {path:path}, + async: false, + success: function(data){ + selectedNode({ + id: path+".json" + }) + // reloadResource() + } + }); + } + + + layer.prompt({ + formType: 0, + value: '', + title: '请输入文件名称', + area: ['200px', '20px'] //自定义文本域宽高 + }, function(value, index, elem){ + var path = getFilePath(value); + send(path); + layer.close(index); + }); + } + + + /** + * 获取右键选择数据 -> 文件路径 + */ + function getContextmenuFilePath(){ + return contextmenuData.data.path; + } + + /** + * 删除 + * @param path + */ + function deleteResource(){ + //获取 + var path = getContextmenuFilePath(); + api.delete({ + enableRootPath: true, + url: "resource", + data: {path:path}, + async: false, + success: function(data){ + selectedNode({ + id: path + }) + } + }); + } + + function getParentPath(path) { + var slashIndex = path.lastIndexOf("/"); + if(slashIndex != -1){ + path = path.substring(0, slashIndex); + + if(path.lastIndexOf('#') == path.length-1){ + return path.substring(0, path.lastIndexOf('#')); + }else{ + return path + } + + }else{ + return path + } + } + + function openDoamin(data, target) { + var treeNode = data; + var id = target.id; + + open_domain.render({ + elem: utils.getTabElem(id), + treeNode: treeNode, + viewMode:viewMode, + pearBody : pearBody, + amisData: utils.getGlobalEnv(treeNode.data), + resource_tabs : resource_tabs_obj + }) + } + + function designDoamin(data, target) { + var treeNode = data; + var id = target.id; + + domain_design.render({ + elem: utils.getTabElem(id), + data:data, + treeNode: treeNode, + viewMode: viewMode, + pearBody : pearBody, + amisData: utils.getGlobalEnv(treeNode.data), + callback: { + reloadtree: function reloadCallback(data){ + // reloadResource(); + selectedNode(data); + } + } + }) + } + + function designVo(data, target) { + var treeNode = contextmenuData; + var id = target.id; + + domain_design_vo.render({ + elem: utils.getTabElem(id), + data:data, + treeNode: treeNode, + viewMode: viewMode, + pearBody : pearBody, + amisData: utils.getGlobalEnv(treeNode.data), + callback: { + reloadtree: function reloadCallback(data){ + selectedNode(data); + } + } + }) + } + + function designBrms(data, target) { + var treeNode = contextmenuData; + var id = target.id; + + brms_design.render({ + elem: utils.getTabElem(id), + data:data, + treeNode: treeNode, + viewMode: viewMode, + pearBody : pearBody, + amisData: utils.getGlobalEnv(treeNode.data), + callback: { + reloadtree: function reloadCallback(data){ + selectedNode(data); + } + } + }) + } + + + function getFilePath(value){ + var path; + if(contextmenuData.data.path===null || contextmenuData.data.path===''){ + path = value; + }else{ + path = contextmenuData.data.path + "/" + value; + } + return path; + } + + function reloadResource(){ + resource_tabs_obj.option.tabIdContentFn = {} + treeObj.refresh(); + //加载树 + treeconf(utils.contextData.trees_settings[utils.contextData.currentTreeId]); + } + + function selectedNode(data){ + //1、刷新树,渲染追加新增的节点 + reloadResource(); + // 2、根据参数获取树节点 + let treeId = treeObj.option.elem.slice(1); + var tree = $.fn.zTree.getZTreeObj(treeId); + + if(data && data.id){ + let node = selectedPath(tree, data.id); + // let node = tree.getNodeByParam("id", data.id, null); + //3、选择目标节点 + tree.selectNode(node); + //单击事件 + tree.setting.callback.onClick(event,treeId,node); + } + + } + + function selectedPath(tree, path) { + let node = tree.getNodeByParam("id", path, null); + if(node == null && path.indexOf("/") != -1){ + node = selectedPath(tree, getParentPath(path)) + } + + return node; + } + + /** + * 创建目录 + * @param path + */ + function createFolder(){ + + function send(path){ + api.post({ + enableRootPath: true, + type: "POST", + url: "resource/folder", + data: {path:path}, + async: false, + success: function(data){ + selectedNode({ + id: path + }) + } + }); + } + + + layer.prompt({ + formType: 0, + value: '', + title: '请输入文件夹名称', + area: ['200px', '20px'] //自定义文本域宽高 + }, function(value, index, elem){ + var path = getFilePath(value); + send(path); + layer.close(index); + }); + } + + function resetContent(contentElem){ + $(contentElem).remove(); + $('.layui-body.gs-body').append('
') + } + + + + function createFileListener(data) { + + createFile('domain_model') + } + + function createDomainFieldListener(data) { + + createMetaData('domain_model', contextmenuData.data.path) + } + + function renameListener(data) { + rename(contextmenuData.data.name, contextmenuData.data.path) + } + + function enableListener(data) { + enable(contextmenuData.data.name, contextmenuData.data.path) + } + + function disableListener(data) { + disable(contextmenuData.data.name, contextmenuData.data.path) + } + + function openDomainListener(data, target) { + openDoamin(data, target) + } + + function designDomainListener(data, target) { + designDoamin(data, target) + } + + function designVoListener(data, target){ + designVo(data, target) + } + + function designBrmsListener(data,target){ + designBrms(data,target) + } + + function createFolderListener(data) { + createFolder() + } + + function removeListener(data) { + deleteResource(); + } + + function createDomainModelListener(data) { + createMetaData(); + } + + /** + * Button component + * */ + var MOD_NAME = 'resource_tree', + $ = layui.jquery, + contextmenuData, + contentElem, + elem, + open_domain = layui.open_domain, + domain_design = layui.domain_design, + domain_design_vo = layui.domain_design_vo, + brms_design = layui.brms_design, + edropdown = layui.edropdown, + form = layui.form, + laytpl = layui.laytpl, + resource_content = layui.resource_content, + resource_properties = layui.resource_properties, + ztree = layui.ztree, + api = layui.api, + schema = layui.schema, + + workflow_design = layui.workflow_design, + + pearBody, + resource_tabs_obj, + amis = layui.amis, + schema_render = layui.schema_render, + resource_tabs = layui.resource_tabs, + treeApi, + treeObj, + resource_tree_obj, + viewMode, + schemaType, + listener = layui.listener, + utils = layui.utils, + // fast_config = layui.fast_config, + treeClickListener, + + //监听器 + contextMenuListeners = { + createFileListener:createFileListener, + removeListener:removeListener, + createDomainModelListener:createDomainModelListener, + createDomainFieldListener:createDomainFieldListener, + renameListener:renameListener, + enableListener:enableListener, + disableListener:disableListener, + openDomainListener:openDomainListener, + designDomainListener:designDomainListener, + createFolderListener:createFolderListener + }, + contentPanelListeners = { + designDomainListener:designDomainListener, + designVoListener:designVoListener, + openDomainListener:openDomainListener, + designBrmsListener:designBrmsListener, + } + + ; + + + + function zTreeOnRightClick(event, treeId, treeNode) { + + utils.setTreeNodeData(treeNode.data); + let treeobj = $.fn.zTree.getZTreeObj(treeId) + schemaType = treeobj.setting.view.schemaType; + // 将右击事件的节点数据绑定到以下变量中 + contextmenuData = treeNode; + utils.contextData.contextmenuData = contextmenuData; + utils.contextData.currentTreeId = treeId; + }; + + var resource_tree = function(opt) { + this.option = opt; + }; + + + function getContextmenuData(){ + return contextmenuData; + } + + + function registerListeners(){ + $.each(contextMenuListeners, function(name ,_listener){ + listener.registerContextMenuListener(name, _listener) + }) + $.each(contentPanelListeners, function(name ,_listener){ + listener.registerContentPanelListener(name, _listener) + }) + + listener.registerResourceTreeClickListener('extention_resourceTreeClickListener', extention_resourceTreeClickListener); + + } + + + /** + * 扩展_单击树监听器 + * @param {} event + * @param {*} treeId + * @param {*} treeNode + */ + function extention_resourceTreeClickListener(event, treeId, treeNode, option, pearBody, resource_tabs_obj){ + var onClickListener = option.onClickListener; + + if(onClickListener && typeof onClickListener === 'function'){ + onClickListener(event, treeId, treeNode); + } + } + + /** + * Button start loading + * 加载树 + * */ + function treeconf(option){ + + registerListeners(); + var settings = { + view: { + onKeyboard: true, + showLine: false, + theme:'default', + treeMode: option.treeMode, + keepActiveParentNode:'.box1' + }, + check: { + enable: true + }, + data: { + simpleData: { + enable: true + } + } + ,callback:{ + onLeafEnter: function(treeId,treeNode){ + console.log(treeId,treeNode) + }, + onClick: function zTreeOnClick(event, treeId, treeNode) { + utils.contextData.currentTreeId = treeId; + utils.setTreeNodeData(treeNode.data); + + var treeObj = $.fn.zTree.getZTreeObj(treeId) + var schemaType = treeObj.setting.view.schemaType; + + contextmenuData = treeNode; + + var metaType = treeNode.data.type.metaType; + var resourceTypeSchema = schema.get(schemaType); + var typeSchema = resourceTypeSchema[metaType]; + if(typeSchema.contentPanel){ + sessionStorage.setItem('content-schemaType',JSON.stringify(schemaType)) + } + + var onClickListener = option.onClickListener; + if(onClickListener && typeof onClickListener === 'function'){ + // if(treeClickListener && typeof treeClickListener === 'function'){ + onClickListener(event, treeId, treeNode); + } + + $.each(listener.getResourceTreeClickListeners(), function(index, listener){ + listener(event, treeId, treeNode, option, pearBody, resource_tabs_obj); + }) + }, + onRightClick: zTreeOnRightClick + } + }; + + settings.view.schemaType = option.schemaType + + treeObj = ztree.render({ + elem: option.elem, + setting: settings, + enableRootPath:option.enableRootPath, + api: option.api + }); + + edropdown.render({ + elem: option.elem //在 id="demo" 的元素中触发事件。也可以直接设置为 document,从而重置整个右键菜单 + ,trigger: 'contextmenu' //右键事件 + ,click: function(obj, f, e){ + // var data = contextmenuData.data; + + schema_render.render({ + elem: obj.id, + schema: obj, + contextData: contextmenuData, + callback: { + dialog: function dialogCallback(data){ + // reloadResource(); + selectedNode(data); + } + } + }) + + }, + beforeRander: function(config){ + var data = getContextmenuData(); + var resourceTypeSchema = schema.get(schemaType); + if(resourceTypeSchema){ + var resourceSchema = resourceTypeSchema[data.data.type.metaType]; + if(resourceSchema && resourceSchema.funcs){ + var enabled = data.data.enabled; + config = $.grep(resourceSchema.funcs, + function(obj, i) { + if(obj.disabledOn){ + return utils.evalExpression(obj.disabledOn, getContextmenuData().data) + } + if(enabled && obj['id'] === 'enable'){ + return false; + }else if(!enabled && obj['id'] === 'disable'){ + return false; + } + return true; + }); + config.resourceSchema = resourceSchema; + } + + } + return config; + }, + data: [] + }); + + } + + + resource_tree.prototype.selectedNode = function(data) { + selectedNode(data); + } + + resource_tree.prototype.render = function(opt) { + + var option = { + elem: opt.elem, + contentElem: opt.contentElem, + enableRootPath:opt.enableRootPath, + api:opt.api, + treeMode: opt.treeMode, + viewMode: opt.viewMode, + schemaType:opt.schemaType, + onClickListener: opt.onClickListener + } + + // treeClickListener = option.onClickListener; + + viewMode = option.viewMode; + contentElem = option.contentElem; + elem = option.elem; + schemaType = option.schemaType; + + treeconf(option); + + //因刷新树时会清空你tab,所以该方法单独抽出。 + resource_tabs_obj = resource_tabs.render({ + elem: 'content', + viewMode: option.viewMode + }); + + pearBody = resource_tabs_obj.option.pearBody; + + resource_tree_obj = new resource_tree(option); + return resource_tree_obj + } + + + exports(MOD_NAME, new resource_tree()); + }); listener(event, treeId, treeNode, option, pearBody, resource_tabs_obj); }) }, @@ -659,9 +1358,9 @@ layui.define(['element', 'api', 'amis', 'schema', 'listener', 'api', 'jqgrid', ' } resource_tree.prototype.render = function(opt) { - - var option = { - elem: opt.elem, + + var option = { + elem: opt.elem, contentElem: opt.contentElem, enableRootPath:opt.enableRootPath, api:opt.api, @@ -669,7 +1368,7 @@ layui.define(['element', 'api', 'amis', 'schema', 'listener', 'api', 'jqgrid', ' viewMode: opt.viewMode, schemaType:opt.schemaType, onClickListener: opt.onClickListener - } + } // treeClickListener = option.onClickListener; @@ -690,7 +1389,7 @@ layui.define(['element', 'api', 'amis', 'schema', 'listener', 'api', 'jqgrid', ' resource_tree_obj = new resource_tree(option); return resource_tree_obj - } + } exports(MOD_NAME, new resource_tree()); diff --git a/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/tab.js b/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/tab.js index d1fbbd3..bd7d08d 100644 --- a/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/tab.js +++ b/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/tab.js @@ -49,7 +49,7 @@ layui.define(['jquery', 'element'], function (exports) { var lastIndex; var tab = createTab(option); - + $("#" + option.elem).html(tab); $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-prev").click(function () { rollPage("left", option); @@ -460,15 +460,17 @@ layui.define(['jquery', 'element'], function (exports) { var prevNode = removeTab.prev("li"); prevNode.addClass("layui-this"); currId = prevNode.attr("lay-id"); - console.log(currId,'currId') - if(currId === 'dashbord'){ - $("#" + elem + " .layui-tab-content>.layui-tab-item").addClass("layui-show"); - }else { - $("#" + elem + " [id='treenode_" + currId + "']").parent().addClass("layui-show"); - } - + console.log(currId,'currId') + if(currId === 'dashbord'){ + $("#" + elem + " .layui-tab-content>.layui-tab-item").addClass("layui-show"); + }else { + $("#" + elem + " [id='treenode_" + currId + "']").parent().addClass("layui-show"); + } + + } + if(callback){ + callback(currId); } - callback(currId); tabData = JSON.parse(sessionStorage.getItem(elem + "-pear-tab-data")); tabDataCurrent = sessionStorage.getItem(elem + "-pear-tab-data-current"); tabData = tabData.filter(function (item) { @@ -507,7 +509,7 @@ layui.define(['jquery', 'element'], function (exports) { }); var content = '
'; var control = - '
    • '; + '
      • '; // var control = // '
        • '; diff --git a/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/workflow/workflow_design.js b/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/workflow/workflow_design.js index fe254ae..92d66fe 100644 --- a/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/workflow/workflow_design.js +++ b/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/workflow/workflow_design.js @@ -23,7 +23,7 @@ layui.define(['element', 'api', 'fast_config', 'amis', 'utils', 'tab'], function * @param {*} toolbrObj */ function saveWorkflowModelResourceToolbarListener(event, spanSchema, toolbrObj) { - debugger + // debugger var div = pearTab.getActiveContent('#content') var activeIframe = $(div).children('div').children('iframe')[0] var iframeWindow = activeIframe.contentWindow @@ -33,7 +33,7 @@ layui.define(['element', 'api', 'fast_config', 'amis', 'utils', 'tab'], function console.log("activeIframeId=" + activeIframeId) console.log("activeIframeSrc=" + activeIframeSrc) - var activeTabId = activeIframeId.split('treenode_')[1] + var activeTabId = activeIframeId.split('_')[1] + '_' + activeIframeId.split('_')[2] console.log("activeTabId=" + activeTabId) // 获取流程模型发布状态 @@ -49,12 +49,12 @@ layui.define(['element', 'api', 'fast_config', 'amis', 'utils', 'tab'], function btn1: function (layero, index) { var flag = false postMessage(flag) - afterSave(flag) + // afterSave(flag, res) }, btn2: function (layero, index) { var flag = true postMessage(flag) - afterSave(flag) + // afterSave(flag, res) }, btn3: function (layero, index) { layer.closeAll(); @@ -71,7 +71,7 @@ layui.define(['element', 'api', 'fast_config', 'amis', 'utils', 'tab'], function btn1: function (layero, index) { var flag = true postMessage(flag) - afterSave(flag) + // afterSave(flag, res) }, btn3: function (layero, index) { layer.closeAll(); @@ -81,36 +81,67 @@ layui.define(['element', 'api', 'fast_config', 'amis', 'utils', 'tab'], function // 调用流程设计器中的保存 function postMessage(flag) { - // var receiver = document.getElementById(activeIframeId).contentWindow; - var params = { - type: "workflowSave", - updateVersion: flag - } - var res = iframeWindow.globalSaveProcess(true) - console.log(res,'res') + var res = null + sessionStorage.setItem('workFlowModel', '') + iframeWindow.globalSaveProcess(flag) + var timer = setInterval(function () { + res = sessionStorage.getItem('workFlowModel') + if (res) { + clearInterval(timer) + afterSave(flag, res) + } + }, 200) } // 保存后操作 - function afterSave(flag) { - setTimeout(()=>{ + function afterSave(flag, res) { + // 根据返回数据判断是否成功 + console.log(res, 'res') + var resObj = JSON.parse(res) + if (resObj && resObj.id) { if (flag) { // 刷新树 - var data = {}; - layui.resource_tree.selectedNode(data) + var data = { + id: resObj.id + }; // 关闭tab - pearTab.delTabByElem('#content', activeTabId) + pearTab.delTabByElem('content', activeTabId) + console.log(data, "selectedNode") + layui.resource_tree.selectedNode(data) } layer.closeAll(); layer.alert("操作成功") - },1000) + } else { + layer.closeAll(); + layer.alert("操作失败") + } + } } + function viewWorkflowModelResourceToolbarListener(event, spanSchema, toolbrObj){ + debugger + var div = pearTab.getActiveContent('#content') + var activeIframe = $(div).children('div').children('iframe')[0] + var iframeWindow = activeIframe.contentWindow + iframeWindow.globalChangePreview() + } + + function downloadWorkflowModelResourceToolbarListener(event, spanSchema, toolbrObj){ + debugger + var div = pearTab.getActiveContent('#content') + var activeIframe = $(div).children('div').children('iframe')[0] + var iframeWindow = activeIframe.contentWindow + iframeWindow.globalExportSvgAction() + } + /** * 模块装配 */ function configur() { listeners.registerToolbarListener("saveWorkflowModelResourceToolbarListener", saveWorkflowModelResourceToolbarListener) + listeners.registerToolbarListener("viewWorkflowModelResourceToolbarListener", viewWorkflowModelResourceToolbarListener) + listeners.registerToolbarListener("downloadWorkflowModelResourceToolbarListener", downloadWorkflowModelResourceToolbarListener) } -- Gitee From e0295c1d9329a665aadabe254b5dfcb2a21d5433 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B8=B8=E6=9C=9D=E8=BE=89?= Date: Fri, 9 Sep 2022 09:50:02 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=88=B7=E6=96=B0=E6=A0=91=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=88=A4=E6=96=ADresource=5Ftabs=E5=AE=9E=E4=BE=8B?= =?UTF-8?q?=E6=98=AF=E5=90=A6=E4=B8=BA=E7=A9=BA=EF=BC=8C=E7=A9=BA=E7=9A=84?= =?UTF-8?q?=E8=AF=9D=E9=87=8D=E6=96=B0=E7=94=9F=E6=88=90=20=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E8=AE=BE=E8=AE=A1=E5=99=A8=E5=B7=A5=E5=85=B7=E6=A0=8F?= =?UTF-8?q?=E6=8C=89=E9=92=AE=E9=80=BB=E8=BE=91=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/js/module/editor/resource_tree.js | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/editor/resource_tree.js b/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/editor/resource_tree.js index 4cc6e4b..2e7107e 100644 --- a/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/editor/resource_tree.js +++ b/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/editor/resource_tree.js @@ -896,7 +896,19 @@ layui.define(['element', 'api', 'amis', 'schema', 'listener', 'api', 'jqgrid', ' } function reloadResource(){ - resource_tabs_obj.option.tabIdContentFn = {} + + // tab资源没有重新生成 + if(!resource_tabs_obj){ + resource_tabs_obj = resource_tabs.render({ + elem: 'content', + viewMode: option.viewMode + }); + } + + //清除缓存 + if(resource_tabs_obj && resource_tabs_obj.option.tabIdContentFn) { + resource_tabs_obj.option.tabIdContentFn = {} + } treeObj.refresh(); //加载树 treeconf(utils.contextData.trees_settings[utils.contextData.currentTreeId]); -- Gitee From 02da92d8d4c1b14c2d5e4abf0b09f2cad328bdbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B8=B8=E6=9C=9D=E8=BE=89?= Date: Fri, 9 Sep 2022 10:25:57 +0800 Subject: [PATCH 3/3] =?UTF-8?q?resource=5Ftree=E9=97=AE=E9=A2=98=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=20=E6=B5=81=E7=A8=8B=E7=9B=91=E5=90=AC=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/js/module/editor/resource_tree.js | 2 +- .../src/js/module/workflow/workflow_design.js | 18 ++++++++++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/editor/resource_tree.js b/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/editor/resource_tree.js index 2e7107e..2d50dfc 100644 --- a/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/editor/resource_tree.js +++ b/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/editor/resource_tree.js @@ -909,9 +909,9 @@ layui.define(['element', 'api', 'amis', 'schema', 'listener', 'api', 'jqgrid', ' if(resource_tabs_obj && resource_tabs_obj.option.tabIdContentFn) { resource_tabs_obj.option.tabIdContentFn = {} } - treeObj.refresh(); //加载树 treeconf(utils.contextData.trees_settings[utils.contextData.currentTreeId]); + treeObj.refresh(); } function selectedNode(data){ diff --git a/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/workflow/workflow_design.js b/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/workflow/workflow_design.js index 92d66fe..b3bef1e 100644 --- a/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/workflow/workflow_design.js +++ b/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/workflow/workflow_design.js @@ -24,6 +24,9 @@ layui.define(['element', 'api', 'fast_config', 'amis', 'utils', 'tab'], function */ function saveWorkflowModelResourceToolbarListener(event, spanSchema, toolbrObj) { // debugger + if(event.currentTarget.className.indexOf('save_disabled') > -1){ + return false + } var div = pearTab.getActiveContent('#content') var activeIframe = $(div).children('div').children('iframe')[0] var iframeWindow = activeIframe.contentWindow @@ -42,7 +45,7 @@ layui.define(['element', 'api', 'fast_config', 'amis', 'utils', 'tab'], function if ('N' === idDeployment) { layer.open({ type: 1, - title: '确认', + title: '操作', shade: 0.3, content: ``, btn: ['保存', '升级', '取消'], @@ -64,7 +67,7 @@ layui.define(['element', 'api', 'fast_config', 'amis', 'utils', 'tab'], function } else { layer.open({ type: 1, - title: '确认', + title: '操作', shade: 0.3, content: ``, btn: ['升级', '取消'], @@ -120,15 +123,22 @@ layui.define(['element', 'api', 'fast_config', 'amis', 'utils', 'tab'], function } function viewWorkflowModelResourceToolbarListener(event, spanSchema, toolbrObj){ - debugger + // debugger var div = pearTab.getActiveContent('#content') var activeIframe = $(div).children('div').children('iframe')[0] var iframeWindow = activeIframe.contentWindow iframeWindow.globalChangePreview() + if($('.header-right-toolBar').find('.xml_active').length){ + $('.header-right-toolBar .xml_active').removeClass('xml_active'). addClass('workflow_active') + $('.header-right-toolBar .save_active').removeClass('save_active'). addClass('save_disabled') + }else{ + $('.header-right-toolBar .workflow_active').removeClass('workflow_active'). addClass('xml_active') + $('.header-right-toolBar .save_disabled').removeClass('save_disabled'). addClass('save_active') + } } function downloadWorkflowModelResourceToolbarListener(event, spanSchema, toolbrObj){ - debugger + // debugger var div = pearTab.getActiveContent('#content') var activeIframe = $(div).children('div').children('iframe')[0] var iframeWindow = activeIframe.contentWindow -- Gitee