new Vue({ el: '#condParas', data: { conds: [], expandAll: false, loadingDialog: false, Event: '', systemNodeItems: [] }, watch: { expandAll(val) { this.expandMenus(val); } }, methods: { expandMenus: function (status) { for (var i = 0; i < this.conds.length; i++) { this.conds[i].open = status } }, bindMenu: function () { var _this = this; layui.use('dropdown', function () { var dropdown = layui.dropdown _this.systemNodeItems = [ { title: '按表单条件计算', id: "CondByFrm" }, { title: '按已选择的独立表单条件计算', id: "StandAloneFrm" }, { title: '按指定操作员的岗位条件', id: "CondStation" }, { title: '按指定操作员的部门条件', id: "CondDept" }, { title: '按SQL条件计算', id: "CondBySQL" }, { title: '按SQL模版条件计算', id: "CondBySQLTemplate" }, { title: '按开发者参数计算', id: "CondByPara" }, { title: '按Url条件计算', id: "CondByUrl" }, { title: '按WebApi返回值', id: "CondByWebApi" }, { title: '按审核组件的立场计算', id: "CondByWorkCheck" }, ] var systemFunc = function (data, oThis) { var url = GetHrefUrl(); url = url.replace('List.htm', data.id + '.htm'); SetHref(url); // window.parent.Condlist.openTab(data.title, url); // OpenLayuiDialog(url, "", 0, 0, null, true); } var systemOptions = [{ elem: '.item-top-dp', trigger: 'contextmenu', data: _this.systemNodeItems, click: systemFunc }, { elem: '.NewPara-btn', trigger: 'click', data: _this.systemNodeItems, click: systemFunc }] dropdown.render(systemOptions[0]); dropdown.render(systemOptions[1]); var menuFunc = function (data, oThis) { //var idx = $(this.elem)[0].dataset.idx; // var condIdx = idx - 1; var en = new Entity("BP.WF.Template.Cond"); //生成一个随机数添加到运算符的主键中 var radomNum = parseInt(Math.random() * 1000) + 1; en.SetPKVal(flowNo + "_" + nodeID + "_" + radomNum); en.CondType = condType; //条件类型. en.DataFrom = 100; //运算符. en.FK_Flow = flowNo; en.FK_Node = nodeID; en.FK_Operator = data.condExp; //都赋值,以免用错. en.OperatorValue = data.condExp; //都赋值,以免用错. en.ToNodeID = toNodeID; en.Idx = 100; en.Insert(); layer.msg('添加成功', { time: 2000 }, function () { Reload(); }); } var menuNodeItems = [ { title: '( 左括号', condExp: '(' }, { title: ') 右括号', condExp: ')' }, { title: 'AND 并且', condExp: 'AND' }, { title: 'OR 或者', condExp: 'OR' } ] var menuOptions = [{ elem: '.item-menu-dp', trigger: 'contextmenu', data: menuNodeItems, click: menuFunc }, { elem: '.condExp-btn', trigger: 'click', data: menuNodeItems, click: menuFunc }] dropdown.render(menuOptions[0]); dropdown.render(menuOptions[1]); }) }, DeleteSort: function (no) { if (window.confirm("确定要删除吗?") == false) return; var en = new Entity("BP.WF.Template.Cond", no); var data = en.Delete(); layer.msg(data); //如果有错误. if (data.indexOf("err@") == 0) return; setTimeout(function () { window.location.reload(); }, 2000) }, EditCond: function (item) { var url = GetHrefUrl(); url = url.replace('List.htm', this.systemNodeItems[item.DataFrom].id + '.htm') + "&MyPK=" + item.MyPK; SetHref(url); }, MoveItem(pastNodeArrStr, pastNodeId, currentNodeArrStr, currentNodeId) { var handler = new HttpHandler("BP.WF.HttpHandler.WF_Admin_Cond2020"); handler.AddPara("MyPKs", currentNodeArrStr); var data = handler.DoMethodReturnString("List_Move"); this.CondCheck(); }, CondCheck: function () { var handler = new HttpHandler("BP.WF.HttpHandler.WF_Admin_Cond2020"); handler.AddPara("ToNodeID", GetQueryString("ToNodeID")); handler.AddPara("FK_Node", GetQueryString("FK_Node")); handler.AddPara("CondType", GetQueryString("CondType")); var data = handler.DoMethodReturnString("List_DoCheck"); // alert(data); $("#msg").html(data); }, initSortArea: function () { var _this = this this.$nextTick(function () { var childSortableContainers = this.$refs['child-row'] new Sortable(childSortableContainers, { animation: 150, dataIdAttr: 'data-id', ghostClass: 'blue-background-class', onStart: function ( /**Event*/ evt) { _this.loadingDialog = layer.msg('正在移动...', { timeout: 900 * 1000 }) }, onEnd: function (evt) { /** * 这里区分两种情况,一种是跨列移动,一种非跨列移动 * 如果跨列移动,可以利用以下四个参数来实现 * * @param pastNodeArrStr 被移出的列的子节点排序 * @param pastNodeId 被移出的列的节点id * @param currentNodeArrStr 移入的列的子节点排序 * @param currentNodeId 移入的列的节点id * * 假如非跨列,此时被移出的和移入的为同一个,使用前两个参数或者后两个参数都可以实现 */ layer.close(_this.loadingDialog) var pastNodeArrStr = Array.from(evt.from.querySelectorAll('div[data-id]')).map(function (item) { return item.dataset.id }).join(',') var pastNodeId = evt.from.dataset.id var currentNodeArrStr = Array.from(evt.to.querySelectorAll('div[data-id]')).map(function (item) { return item.dataset.id }).join(',') var currentNodeId = evt.to.dataset.id // 二级菜单的排序 _this.MoveItem(pastNodeArrStr, pastNodeId, currentNodeArrStr, currentNodeId) } }) }) }, // 是否启用 changecondEnableStatus(cond, ctrl) { // 当前启用状态 //var en = new Entity("BP.CCBill.Template.cond", cond.No); //if (en.IsEnable == 0) // en.IsEnable = 1; // cond.IsEnable; //else // en.IsEnable = 0; // cond.IsEnable; //en.Update(); console.log("更新成功.."); } }, mounted: function () { document.body.ondrop = function (event) { event.preventDefault(); event.stopPropagation(); } var dir = null; var conds = new Entities("BP.WF.Template.Conds"); // alert(condType); conds.Retrieve("FK_Node", nodeID, "ToNodeID", toNodeID, "CondType", condType, "Idx"); //输出条件类型. var Eventtitle = ''; if (condType == 0) Eventtitle = '节点完成条件'; if (condType == 2) { var toNode = new Entity("BP.WF.Node", toNodeID); Eventtitle = '到达节点[' + toNode.NodeID + " " + toNode.Name + ']的方向条件'; } if (condType == 1) Eventtitle = '流程完成条件'; if (condType == 3) Eventtitle = '子流程启动条件'; this.Event = Eventtitle; console.log(this.Event); conds = obj2arr(conds); console.log(conds) conds.forEach(function (cond) { //控件数据类型 if (cond.DataFrom == "0") { cond.DataFromText = "表单字段"; } else if (cond.DataFrom == "1") { cond.DataFromText = "独立表单"; } else if (cond.DataFrom == "2") { cond.DataFromText = "按岗位"; } else if (cond.DataFrom == "3") { cond.DataFromText = "按部门"; } else if (cond.DataFrom == "4") { cond.DataFromText = "按SQL"; } else if (cond.DataFrom == "5") { cond.DataFromText = "按SQL模板"; } else if (cond.DataFrom == "6") { cond.DataFromText = "按参数"; } else if (cond.DataFrom == "7") { cond.DataFromText = "按URL"; } else if (cond.DataFrom == "8") { cond.DataFromText = "按WebApi返回值"; } else if (cond.DataFrom == "9") { cond.DataFromText = "按审核组件立场"; } else if (cond.DataFrom == "100") { cond.DataFromText = "运算符"; } if (cond.DataFrom == 100) { cond.Express = cond.OperatorValue; } else { if (cond.OperatorValueT != "") cond.Express = cond.AttrKey + cond.FK_Operator + cond.OperatorValueT; else cond.Express = cond.AttrKey + cond.FK_Operator + cond.OperatorValue; if (cond.AttrKey != "") cond.Express = "说明:" + cond.AttrName + " " + cond.FK_Operator + " " + " " + cond.OperatorValue; } }) this.conds = conds; console.log(this.conds); this.CondCheck(); this.bindMenu(); this.initSortArea(); layui.use('form', function () { var form = layui.form; form.render() // form.on("switch(enable)", function (e) { // console.log(e) // }) }); var _this = this setTimeout(function () { _this.expandAll = true }, 300) } }) function obj2arr(obj) { delete obj.Paras delete obj.ensName delete obj.length var arr = [] for (var key in obj) { if (Object.hasOwnProperty.call(obj, key)) { arr.push(obj[key]); } } return arr } //属性. function AttrFrm(enName, title, pkVal) { var url = "../../Comm/En.htm?EnName=" + enName + "&No=" + pkVal; title = ""; OpenLayuiDialog(url, title, 5000, 0, null, false); return; } function DesignerFlow(no, name) { var sid = GetQueryString("SID"); var webUser = new WebUser(); var url = "../Admin/CCBPMDesigner/Designer.htm?FK_Flow=" + no + "&UserNo=" + webUser.No + "&SID=" + sid + "&OrgNo=" + webUser.OrgNo + "&From=Ver2021"; window.top.vm.openTab(name, url); } function addTab(no, name, url) { window.top.vm.openTab(name, url); } function NewPara() { var url = "../../../Admin/FoolFormDesigner/FieldTypeList.htm?DoType=AddF&FK_MapData=" + GetQueryString("No"); /* OpenLayuiDialog(url, "eudlgframe", "新建参数", 800, 500, "icon-edit", true, null, null, null, function () { Reload(); });*/ OpenLayuiDialog(url, '新建参数', 900, 80, "auto", true); } //删除. function Delete(no) { if (window.confirm('您确定要删除吗?') == false) return; var en = new Entity("BP.Sys.Cond"); en.No = no; en.Delete(); Reload(); } function TocondDoc() { SetHref("Default.htm?No=" + GetQueryString("No")); }