var baseInfo = new Vue({ el: '#flow', data: { flowNodes: [], expandAll: false }, watch: { expandAll: function(val) { this.expandMenus(val) } }, methods: { expandMenus: function(status) { for (var i = 0; i < this.flowNodes.length; i++) { this.flowNodes[i].open = status } }, bindMenu: function() { var _this = this layui.use('dropdown', function() { var dropdown = layui.dropdown var topNodeItems = [ { title: ' 新建表单', id: "NewFlow", Icon: "icon-plus" }, { title: ' 重命名', id: "EditSort", Icon: "icon-options" }, { title: ' 新建目录', id: "NewSort", Icon: "icon-magnifier-add" }, { title: ' 导入表单模版', id: "ImpFlowTemplate", Icon: "icon-plus" }, { title: ' 批量导出表单模版', id: "BatchExpFrmTemplate", Icon: "icon-plus" }, { title: ' 删除目录', id: "DeleteSort", Icon: "icon-close" } ] var tRenderOptions = [{ elem: '.item-top-dp', trigger: 'contextmenu', data: topNodeItems, click: function(data, oThis) { _this.topNodeOption(data.id, $(this.elem)[0].dataset.no, $(this.elem)[0].dataset.name, $(this.elem)[0].dataset.idx) } }, { elem: '.t-btn', trigger: 'click', data: topNodeItems, click: function(data, oThis) { _this.topNodeOption(data.id, $(this.elem)[0].dataset.no, $(this.elem)[0].dataset.name, $(this.elem)[0].dataset.idx) } }] dropdown.render(tRenderOptions[0]); dropdown.render(tRenderOptions[1]); var childNodeMenuItems = [ { title: ' 表单属性', id: "Attr", Icon: "icon-options" }, { title: ' 设计表单', id: "Designer", Icon: "icon-settings" }, { title: ' 运行表单', id: "Start", Icon: "icon-paper-plane" }, { title: ' 复制表单', id: "Copy", Icon: "icon-docs" }, { title: ' 删除表单', id: "Delete", Icon: "icon-close" } ] var cRenderOptions = [{ elem: '.item-name-dp', trigger: 'contextmenu', data: childNodeMenuItems, click: function(data, othis) { _this.childNodeOption(data.id, $(this.elem)[0].dataset.no, $(this.elem)[0].dataset.name, $(this.elem)[0].dataset.pidx, $(this.elem)[0].dataset.idx) } }, { elem: '.c-btn', trigger: 'click', data: childNodeMenuItems, click: function(data, othis) { _this.childNodeOption(data.id, $(this.elem)[0].dataset.no, $(this.elem)[0].dataset.name, $(this.elem)[0].dataset.pidx, $(this.elem)[0].dataset.idx) } }] dropdown.render(cRenderOptions[0]); dropdown.render(cRenderOptions[1]); }) }, //如果w=0 则是100%的宽度. openLayer: function(uri, name, w, h) { //console.log(uri, name); if (w == 0) w = window.innerWidth; if (w == undefined) w = window.innerWidth / 2; if (h == undefined) h = window.innerHeight; layer.open({ type: 2, title: name, content: [uri, 'auto'], area: [w + 'px', h + 'px'], offset: 'rb', shadeClose: true }) }, Designer: function(no, name) { var sid = GetQueryString("Token"); var webUser = new WebUser(); var url = basePath + "/WF/Admin/FoolFormDesigner/GoToFrmDesigner.htm?FK_MapData=" + no + "&FrmID=" + no + "&UserNo=" + webUser.No + "&Token=" + sid + "&OrgNo=" + webUser.OrgNo + "&From=Ver2021"; try { window.top.vm.openTab(name, url); } catch (e) { WinOpenFull(url); } }, EditSort: function(no, name) { var val = prompt("请输入名称", name); if (val == null || val == '') return; var en = new Entity("BP.WF.Template.SysFormTree", no); en.Name = val; en.Update(); // alert("修改成功"); Reload(); return; // var url = "../Comm/EnOnly.htm?EnName=BP.WF.Template.FlowSort&No=" + no; // this.openLayer(url, "目录:" + name); }, StartFrm: function(no, name) { var sid = GetQueryString("Token"); var webUser = new WebUser(); var en = new Entity("BP.Sys.MapData", no); if (en.EntityType == 0) { layer.alert("表单:[" + en.Name + "]是独立表单不能运行,如果要调用表单,请参考/WF/CCBill/Demo/index.htm"); return; } var url = ""; if (en.EntityType == 1) url = basePath + "/WF/CCBill/SearchDict.htm?FrmID=" + en.No; if (en.EntityType == 2) url = basePath + "/WF/CCBill/SearchBill.htm?FrmID=" + en.No; if (en.EntityType == 3) url = basePath + "/WF/CCBill/SearchTree.htm?FrmID=" + en.No; //var url = basePath + "/WF/Admin/FoolFormDesigner/GoToRunFrm.htm?FK_MapData=" + no + "&FrmID=" + no + "&UserNo=" + webUser.No + "&Token=" + sid + "&OrgNo=" + webUser.OrgNo + "&From=Ver2021"; //var url = "../Comm/En.htm?EnName=BP.WF.Template.FlowExt&No=" + no; try { window.top.vm.openTab(name, url); } catch (e) { WinOpenFull(url); } // var url = "../Admin/TestingContainer/TestFlow2020.htm?FK_Flow=" + no; // window.top.vm.fullScreenOpen(url, name); // this.openLayer(url, name); }, flowAttr: function (no, name) { var sid = GetQueryString("Token"); var webUser = new WebUser(); //var url = basePath + "/WF/Admin/FoolFormDesigner/GoToFrmAttr.htm?FK_MapData=" + no + "&FrmID=" + no + "&UserNo=" + webUser.No + "&Token=" + sid + "&OrgNo=" + webUser.OrgNo + "&From=Ver2021"; //var url = "../Comm/En.htm?EnName=BP.WF.Template.FlowExt&No=" + no; var url = "/WF/Comm/RefFunc/En.htm?EnName=BP.WF.Template.Frm.MapFrmFool&PKVal=" + no + "&s=" + Math.random(); try { window.top.vm.openTab(name, url); } catch (e) { WinOpenFull(url); } //this.openLayer(url, name,900); }, copyFrm: function(no) { /* if (window.confirm("确定要执行表单复制吗?") == false) return;*/ var flow = new Entity("BP.Sys.MapData", no); var frmID = promptGener("表单ID:" + no + "Copy", no + "Copy"); if (frmID == undefined || frmID == null || frmID == '') return; var frmName = promptGener("表单名称:" + flow.Name + "Copy", flow.Name + "Copy"); if (frmName == undefined || frmName == null || frmName == '') return; var data = flow.DoMethodReturnString("DoCopy", frmID + '~' + frmName); layer.msg(data); Reload(); //setTimeout(function() { // window.location.reload(); //}, 800); }, DeleteFlow: function(no, pidx, idx) { var msg = "提示: 确定要删除该表单吗?"; // msg += "\t\n1.如果该流程下有实例,您不能删除。"; // msg += "\t\n2.该流程为子流程的时候,被引用也不能删除."; if (window.confirm(msg) == false) return; var load = layer.msg("正在处理,请稍候...", { icon: 16, anim: 5 }) //开始执行删除. var en = new Entity("BP.Sys.MapData", no); var data = en.Delete() || ""; if (data != "") layer.msg(data); if (data.indexOf("err@") == 0) return; layer.close(load); Reload(); return; }, childNodeOption: function(key, data, name, pidx, idx) { switch (key) { case "Attr": this.flowAttr(data, name); break; case "Designer": this.Designer(data, name); break; case "Start": this.StartFrm(data, name); break; case "Copy": this.copyFrm(data); break; case "Delete": this.DeleteFlow(data, pidx, idx); break; } }, topNodeOption: function(key, data, name) { switch (key) { case "EditSort": this.EditSort(data, name); break; case "ImpFlowTemplate": this.ImpFlowTemplate(data); break; case "BatchExpFrmTemplate": this.BatchExpFrmTemplate(data, name); break; case "NewSort": this.NewSort(data, true); break; case "DeleteSort": this.DeleteSort(data); break; case "NewFlow": this.NewFlow(data, name); break; default: alert("没有判断的命令" + key); break; } }, NewFlow: function(data, name) { url = basePath + "/WF/Admin/FoolFormDesigner/NewFrmGuide.htm?SortNo=" + data + "&From=Frms.htm&RunModel=1&s=" + Math.random(); this.openLayer(url, "新建表单"); //addTab("NewFlow", "新建表单", url); }, ImpFlowTemplate: function(data) { var url = basePath + "/WF/Admin/Template/ImpFrmLocal.htm?SortNo=" + data; // url = "../Admin/FoolFormDesigner/NewFrmGuide.htm?SortNo=" + data + "&From=Flows.htm&RunModel=1&s=" + Math.random(); // url = "./../Admin/AttrFlow/Imp.htm?FK_Flow=" + fk_flow + "&Lang=CH"; addTab("ImpFlowTemplate", "导入表单模版", url); }, BatchExpFrmTemplate: function (frmTreeNo,frmTreeName) { var handler = new HttpHandler("BP.WF.HttpHandler.WF_Portal"); handler.AddPara("FK_FrmTree", frmTreeNo); handler.AddPara("FrmTreeName", frmTreeName); var data = handler.DoMethodReturnString("Form_BatchExpFrmTemplate"); if (data.indexOf("err@") != -1) { layer.alert(data); return; } var url = data.replace("url@", ""); if (url.indexOf("resources") == -1) { SetHref(basePath + "/" + url); return; } //这个是针对Springboot jar包发布后的下载 SetHref(basePath + "/WF/Ath/DownloadByPath?filePath=" + encodeURIComponent(url)); }, DeleteSort: function(no) { if (window.confirm("确定要删除吗?") == false) return; var en = new Entity("BP.WF.Template.SysFormTree", no); var data = en.Delete(); layer.msg(data); //如果有错误. if (data.indexOf("err@") == 0) return; setTimeout(function() { window.location.reload(); }, 2000) }, NewSort: function(currentElem, sameLevel) { //只能创建同级. sameLevel = true; //例子2 layer.prompt({ value: '', title: '新建' + (sameLevel ? '同级' : '子级') + '表单类别', }, function(value, index, elem) { layer.close(index); var en = new Entity("BP.WF.Template.SysFormTree", currentElem); var data = ""; if (sameLevel == true) { data = en.DoMethodReturnString("DoCreateSameLevelNodeIt", value); } else { data = en.DoMethodReturnString("DoCreateSubFormNodeMy", value); } layer.msg("创建成功" + data); //this.EditSort(data, "编辑"); //return; setTimeout(function() { window.location.reload(); }, 800); }); }, updateSort: function(rootNo, sortNos) { // 目录排序.. var handler = new HttpHandler("BP.WF.HttpHandler.WF_Portal"); handler.AddPara("RootNo", rootNo); handler.AddPara("SortNos", sortNos); var data = handler.DoMethodReturnString("Frms_MoveSort"); layer.msg(data) }, updateFlow: function(sortNo, flowNos) { // alert(sortNo); // alert(flowNos); // 流程排序.. console.log(sortNo, flowNos); var handler = new HttpHandler("BP.WF.HttpHandler.WF_Portal"); handler.AddPara("SortNo", sortNo); handler.AddPara("EnNos", flowNos); var data = handler.DoMethodReturnString("Frms_Move"); layer.msg(data) }, initSortArea: function() { var _this = this this.$nextTick(function() { var sortContainer = this.$refs['sort-main'] new Sortable(sortContainer, { animation: 150, dataIdAttr: 'data-id', ghostClass: 'blue-background-class', onEnd: function(evt) { var arr = this.toArray(); // 一级菜单的排序,默认为1 _this.updateSort('1', arr.join(',')); } }); var childSortableContainers = this.$refs['child-row'] console.log(childSortableContainers); for (var i = 0; i < childSortableContainers.length; i++) { var csc = childSortableContainers[i] new Sortable(csc, { animation: 150, dataIdAttr: 'data-id', ghostClass: 'blue-background-class', onEnd: function(evt) { var arr = this.toArray(); // 二级菜单的排序 _this.updateFlow(evt.item.dataset.pid, arr.join(',')); } }) } }) }, changeFrmInfo: function (en) { if (en.FrmType == 1) en.FrmType = "傻瓜表单"; if (en.FrmType == 0) en.FrmType = "傻瓜表单"; if (en.FrmType == 2) en.FrmType = "自由表单"; if (en.FrmType == 3) en.FrmType = "嵌入式表单"; if (en.FrmType == 4) en.FrmType = "Word表单"; if (en.FrmType == 5) en.FrmType = "在线编辑模式Excel表单"; if (en.FrmType == 6) en.FrmType = "VSTO模式Excel表单"; if (en.FrmType == 7) en.FrmType = "实体类组件"; if (en.FrmType == 8) en.FrmType = "开发者表单"; if (en.FrmType == 10) en.FrmType = "章节表单"; if (en.Icon == "" || en.Icon == null) { if (en.EntityType == 0) en.Icon = "icon-flag"; if (en.EntityType == 1) en.Icon = "icon-info"; if (en.EntityType == 2) en.Icon = "icon-doc"; if (en.EntityType == 3) en.Icon = "icon-organization"; } if (en.EntityType === 0) en.EntityType = "独立表单"; if (en.EntityType === 1) en.EntityType = "单据"; if (en.EntityType === 2) en.EntityType = "实体"; if (en.EntityType === 3) en.EntityType = "树结构实体"; }, init: function () { // fix firefox bug document.body.ondrop = function (event) { event.preventDefault(); event.stopPropagation(); } var webUser = new WebUser(); window.location.href = "FrmTree.htm"; return; //var handler = new HttpHandler("BP.WF.HttpHandler.WF_Portal"); //var fss = handler.DoMethodReturnJSON("Frms_InitSort"); //查询全部. var fss = new Entities("BP.WF.Template.SysFormTrees"); fss.RetrieveAll(); var nodes = fss; nodes = nodes.filter(function (item) { console.log(item) return item.Name !== '表单树'; }) var handler = new HttpHandler("BP.WF.HttpHandler.WF_Portal"); var fls = handler.DoMethodReturnJSON("Frms_Init"); for (var i = 0; i < nodes.length; i++) { var fs = nodes[i]; fs.open = false; fs.children = []; if (parseInt(fs.ParentNo) === 0 || fs.Name === '表单树') continue; for (var j = 0; j < fls.length; j++) { var flow = fls[j]; if (fs.No !== flow.FK_FormTree) continue; this.changeFrmInfo(flow); fs.children.push(flow); } } this.flowNodes = nodes; this.bindMenu(); this.initSortArea(); } }, mounted: function() { this.init(); } }) function AppendFrmToFormTree(sort, no, name) { baseInfo.flowNodes.forEach(item => { if (item.No === sort) { if (item.children == null) item.children = []; var en = new Entity("BP.WF.Template.Frm.MapDataExt", no); baseInfo.changeFrmInfo(en); item.children.push({ No: no, Name: name, FrmType: en.FrmType, FK_FormTree: en.FK_FormTree, PTable: en.PTable, DBSrc: en.DBSrc, Icon: en.Icon, EntityType: en.EntityType, Ver:en.Ver }) } }); baseInfo.bindMenu(); baseInfo.initSortArea(); } function addTab(no, name, url) { window.top.vm.openTab(name, url); }