You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

273 lines
9.7 KiB
Plaintext

11 months ago
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>方向优先级</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="../../Portal/icons/font-icons.min.css" />
<script type="text/javascript" src="../../Portal/js/sortjs/Sortable.min.js"></script>
<!--- 引入代码. -->
<script src="../../Scripts/jquery/jquery.min.js"></script>
<script src="../../Scripts/QueryString.js" type="text/javascript"></script>
<script src="../../Scripts/config.js" type="text/javascript"></script>
<script src="../../Comm/Gener.js" type="text/javascript"></script>
<script type="text/javascript" src="../../Portal/js/vue/vue.js"></script>
<script src="../../Scripts/layui/LayuiDialog.js"></script>
<script src="../../Scripts/layui/layui/layui.js"></script>
<link href="../../Scripts/layui/layui/css/layui.css" rel="stylesheet" />
<base target="_self" />
<style>
.method {
width: 98%;
margin: 10px auto;
}
.method .row {
display: flex;
justify-content: flex-start;
flex: 0.2;
height: 40px;
line-height: 40px;
background-color: #FAFAFA;
}
.method .row .item {
box-sizing: border-box;
flex-shrink: 0;
text-align: center;
border-right: 1px solid #eee;
border-bottom: 1px solid #eee;
}
.item-num {
width: 10%;
display: flex;
align-items: center;
justify-content: center;
}
.item-nodeid {
width: 10%;
display: flex;
align-items: center;
justify-content: center;
}
.item-other {
width: 40%;
display: flex;
align-items: center;
justify-content: center;
}
.method .row .folder-item {
box-sizing: border-box;
width: 80%;
padding-left: 20px;
cursor: pointer;
}
.wrapper .row {
background-color: #fff;
}
#s-main {
transition: all ease .4s;
margin-top: 50px;
}
.fixed {
position: fixed;
top: 10px;
left: 1%;
width: 98%;
}
[v-cloak] {
display: none;
}
.layui-input-block > .layui-form-switch {
margin-top: 0 !important;
}
.method fieldset {
padding: 0px;
margin: 20px 0px 18px;
font-size: 14px;
border: 1px solid #e6e6e6;
}
.method fieldset img {
margin: 10px;
max-width: calc(100% - 20px)
}
.method legend {
margin-left: 20px;
font-size: 15px;
width: auto;
}
.method legend label {
cursor: pointer;
padding: 0 10px;
font-family: "iconfont";
position: relative
}
.method fieldset ul {
padding: 15px;
line-height: 28px;
}
</style>
</head>
<body>
<div class="method" id="method" v-cloak=v-cloak>
<div class="row fixed">
<div class="item item-num"><i class="icon-app"></i> 顺序号</div>
<div class="item item-nodeid">从节点ID</div>
<div class="item item-nodeid">到节点ID</div>
<div class="item item-other">名称(顺序支持拖动.)</div>
</div>
<div class="wrapper" id="s-main" ref="child-row">
<div v-for="(flows,index) in flows" :key="index" :data-id="flows.MyPK">
<div class="row item-name-dp" :data-id="flows.MyPK" :data-idx="index">
<div class="item item-num item-index" style="text-align: right;">{{index + 1}}</div>
<div class="item item-nodeid">
<span> <font color="blue">{{flows.Node}}</font></span>
</div>
<div class="item item-nodeid">
<span> <font color="blue">{{flows.ToNode}}</font></span>
</div>
<div class="item item-other">{{flows.Name}}</div>
</div>
</div>
</div>
<fieldset id="help">
<legend id="help"><label> 什么是方向条件的优先级?</label></legend>
<ul>
<li>在转向中,如果出现一个以上的路线都成立时时,系统就会按照第一个路线来计算,那一个排列最前面就按照那一个计算。</li>
<li>例如在demo中002.请假流程,如果一个人员既有基层岗,也有中层岗那么到达基层与中层的路线都会成立,如果设置了方向条件的优先级,系统就会按照优先满足的条件的路线计算。</li>
<li>只有一个方向条件的小于等于1就不能设置。</li>
</ul>
</fieldset>
</div>
<script>
new Vue({
el: '#method',
data: {
flows: [],
},
methods: {
MoveItem(currentNodeArrStr, currentNodeId) {
//alert(currentNodeArrStr);
//return;
// todo 需要重新实现接口
var handler = new HttpHandler("BP.WF.HttpHandler.WF_Admin_Cond");
handler.AddPara("MyPKs", currentNodeArrStr);
handler.AddPara("FK_Node", GetQueryString("FK_Node"));
var data = handler.DoMethodReturnString("CondPRI_Move");
layer.msg(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 currentNodeArrStr 移入的列的子节点排序
* @param currentNodeId 移入的列的节点id
*
* 假如非跨列,此时被移出的和移入的为同一个,使用前两个参数或者后两个参数都可以实现
*/
layer.close(_this.loadingDialog)
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(currentNodeArrStr, currentNodeId)
}
})
})
},
//查询
},
mounted: function () {
// fix firefox bug
document.body.ondrop = function (event) {
event.preventDefault();
event.stopPropagation();
}
//获得数据源.
var fk_flow = GetQueryString("FK_Flow");
var fk_Node = GetQueryString("FK_Node");
var handler = new HttpHandler("BP.WF.HttpHandler.WF_Admin_Cond");
handler.AddUrlData();
var data = handler.DoMethodReturnString("CondPRI_Init");
if (data.indexOf('err@') == 0) {
$("#Msg").html("<font color=red>加载失败:<br>" + data + "</font> .");
return;
}
if (data.indexOf('info@') == 0) {
$("#Msg").html("<font >提示:<br>" + data + "</font> .");
return;
}
//转json.
var conds = JSON.parse(data);
console.log(conds);
for (var i = 0; i < conds.length; i++) {
var cond = conds[i];
var nd = new Entity("BP.WF.Template.NodeSimple", cond.ToNode);
cond.Name = nd.Name;
}
this.flows = conds;
this.initSortArea();
layui.use('form', function () {
var form = layui.form;
form.render()
});
var _this = this
setTimeout(function () {
_this.expandAll = true
}, 300)
}
})
</script>
</body>
</html>