Explorar el Código

fix(ws_ff): 修复拖拽失效——加 SSAppMounted 钩子让旧初始化在 Vue mount 后跑

Vue 接管 #app 时会替换整棵子树,导致 jQuery 在原始 DOM 上挂的拖拽/点击事件全部丢失。
- initVue.js: mounted 钩子末尾派发 SSAppMounted 事件 + 设置 SS.__appMounted 标志
- ws_ff.jsp: setDrag、handleDispense IIFE、$("#test").click、#ryOption 显示恢复
  全部用 document.addEventListener('SSAppMounted', ...) 包起来,等 mount 完成再绑定
- 顺带把 ws_dwff_specific.js 引用从 #app 内挪到外,避免被 Vue 编译时 ignore

后续其他"旧 jQuery 拖拽页 + 外层 #app"的页面都可以套同一个模板。
ruhuxu hace 1 día
padre
commit
4907bd6443
Se han modificado 2 ficheros con 641 adiciones y 0 borrados
  1. 10 0
      js/vue/initVue.js
  2. 631 0
      page/ws_ff.jsp

+ 10 - 0
js/vue/initVue.js

@@ -111,6 +111,16 @@ SS.ready(function () {
                     };
                 }
             });
+
+            // mount 完成统一钩子:旧页面(jQuery/原生 DOM 拖拽等)可订阅 SSAppMounted 事件,
+            // 在 Vue mount 替换 DOM 之后再做事件绑定,避免被 mount 抹掉 by xu 20260429
+            try {
+                window.SS = window.SS || {};
+                window.SS.__appMounted = true;
+                document.dispatchEvent(new Event('SSAppMounted'));
+            } catch (e) {
+                console.error('dispatch SSAppMounted failed:', e);
+            }
         }
     })
 });

+ 631 - 0
page/ws_ff.jsp

@@ -0,0 +1,631 @@
+<%@ page language="java" pageEncoding="UTF-8" isELIgnored="false" %>
+<%@ taglib uri="/ssTag" prefix="ss"%>
+
+<% pageContext.setAttribute(ss.page.PageC.PAGE_objName,"ws");%>
+<%pageContext.setAttribute("wdpageinformation","{'hastab':'0'}");%>
+<!DOCTYPE html>
+<html>
+<head>
+<%@ include file="/page/clip/header.jsp" %>
+<meta charset="UTF-8">
+<title></title>
+<link rel="stylesheet" type="text/css" href="/ss/treeTable/jquery.treetable.css">
+<link rel="stylesheet" type="text/css" href="/ss/treeTable/jquery.treetable.theme.default.css">
+<script type="text/javascript" src="/ss/js/drag_.js"></script> <%-- 原为 "/wd/js/drag.js",因与 Drag.js 重名,故改名为 drag_.js。Lin --%>
+
+<style type="text/css">
+	.bac {
+		width: 41px;
+		height: 41px;
+		background-image: url("/ss/window/theme/dhx_blue/image/close.png");
+		position: absolute;
+		top: 0;
+		right: 0;
+	}
+	.bac:hover {
+		background-position: 41px 0;
+	}
+/*.box {
+	width: 400px;
+	height: 250px;
+	background-color: white;
+	margin: -374px 166px;
+	position: absolute;
+	z-index: 10;
+	display: none;
+	border: #008B8B 1px solid;
+}*/
+	.bottom-div {
+		position: absolute;
+	}
+	#ryOption .radioItem {
+		display: none;
+	}
+	.nbFrame {
+		height: 115px;
+		overflow: auto;
+	}
+	[id^="wrapper"] {
+		display: flex;
+		align-items: center;
+		background: transparent !important;
+	}
+	.ys_cl {
+		display: inline-block;
+		max-width: 56%;
+		overflow: hidden;
+		text-overflow: ellipsis;
+	}
+	.box2 .ys_cl {
+		max-width: 95%;
+	}
+</style>
+
+	<ss:skin file='main.css'/>
+
+</head>
+
+<body style="padding-top:12px;padding-left:8px;">
+<div class="form-container" id="app">
+	<div class="content-box fit-height-content"><%-- vue样式要套上这两套DIV Ben(20260414) --%>
+
+<form id="myForm" method="post" style="padding-right: 4px">
+<input type="hidden" value="" name="nbSelectedId" />
+<input type="hidden" value="" name="rySelectedId" />
+
+<%-- 原 <script src="/page/biz/js/ws_dwff_specific.js"></script> 已挪到 #app 外,避免被 Vue 编译为模板时 ignore by xu 20260429 --%>
+
+	<input type="hidden" name="ryidList" id="ryidList" value=""/>
+
+	<div class="content-div" ssFith='{max:520,min:480,lvl:1}' style="height:480px;">
+
+	<div class="longCardList-div" style="width: calc(100% - 4px);box-sizing: border-box;">
+		<table class="scrollbar" style="max-height: 100%;width: 100%;">
+		<tbody ssFith='{list:true,rowHeight:66}' style="width: 100%;padding: 0px 4px 0px 11px;box-sizing: border-box;"> <%-- 去掉 id="wdTbody0",好像没用到。Lin --%>
+			<tr onclick='wd.display.showComponent({show:["wdDialog"],url:"<ss:serv name='ws_ck' parm='{"wsid":"${wsid}"}' dest='objPlay'/>",title:"查看文书",width:890,height:650,minHeight:109,maxHeight:568,showTitle:"false"});'>
+				<td class="hLine">
+					<div class="longCardList-info" style="font-size: 12px;display: inline-block;float: left;">
+						<span class="longCardList-highlight" style="margin-bottom: 3px;">
+							<a>文书标题:${ws.bt}</a>
+						</span>
+						<div id="cardList-abstract" class="longCardList-dim" style="height: auto;min-height: 20px;max-height: 40px;">
+							文书摘要:<ss:txt val='${ws.zy}'/>
+						</div>
+						<div id="cardList-category" class="longCardList growHeightDiv">
+							<span>文书类型:来文</span>
+<%--					<span>文书范围:<wd:translate name="wsfw" value='${ws.wsfwm}'/></span> --%>
+							<span>文书类别:<ss:cbTrans cb='wslb' val='${ws.wslbm}'/></span>
+							<span>收文时间:<ss:txt val='${ws.swsj}' fmt='yyyy-MM-dd HH:mm'/></span>
+						</div>
+					</div>
+				</td>
+			</tr>
+		</tbody>
+		</table>
+	</div>
+
+		<table class='form' style="table-layout:fixed;">
+		<tbody>
+			<tr>
+				<th width="150px">拟办</th>
+				<td style="padding-right: 0px;">
+					<div class="nbFrame scrollbar">
+						<div id="nbSelected" ssSelClazz="list-checkedIcon" class="scrollbar">
+							<ss:rpt name='nbList' id='item'>
+								<div ssObjId='${item.id}' <ss:equal val='${index}' val2='0'>isSq="true"</ss:equal> class='list-background nb-Div' style='overflow:hidden;max-width:780px;'
+										onClick='if($(window.event.srcElement).is("a,img"))return;
+											wd.display.showComponent({show:["wdDialog"],url:"<ss:serv parm='{"fjid":"${item.fjid}","ynrid":"${item.ynrid}","sm":"${item.sm}"}' dest='shInfo'/>",title:"审核内容",width:945,height:800,minHeight:54,maxHeight:853});'>
+									<span class='nbName list-dim' style='display: inline-block;float: left;width: 85px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;height:41px;line-height:41px;'>
+										${item.xm}
+									</span>
+									<span class='nbBt list-dim' style='float: left;display:inline-flex;height:41px;line-height:41px;width:calc(100% - 265px);'>
+										<span style="overflow:hidden;text-overflow:ellipsis;" title="${item.sm}">
+											${item.sm}
+										</span>
+										<ss:equal val='${empty item.fjid}' val2='false'>
+											<span>
+												<input type="button" class="underlineIcon-attachment" style="margin-left: 5px;" />
+											</span>
+										</ss:equal>
+<%--
+										<wd:equal leftValue="${empty item.ynrid}" rightValue="false">
+											<span>
+												<@input type="button" class="underlineIcon-media" style="margin-left: 5px;" />
+											</span>
+										</wd:equal>
+--%>
+									</span>
+										<div class='sj list-smallDim' style='float: right;margin-right: 10px;font-size: 0px;padding-top:12px;width:80px;'>${item.sj} </div>
+								</div>
+							</ss:rpt>
+						</div>
+					</div>
+				</td>
+			</tr>
+<%-- <input name='wdComponentID' type='hidden' value='ws_ff'/></form> 放错位置了,移到后面。Lin
+		<input name='wdComponentID' type='hidden' value='ws_ff'/></form> --%>
+			<tr id="ys">
+				<th>阅示/处理人员</th>
+				<td style="padding: 0;padding-top: 5px;">
+					<input name="clfs" type="hidden" value="2"/> <%-- 增加了 闭标签 "/"。Lin --%>
+					<div style="float: right;margin-right: 8px;margin-bottom: 3px;">
+						<input class="radioItem" type="button" value="领导" ssVal="1" name="choice"/> <%-- wdValue=。Lin --%>
+						<ss:notEqual val='${ws.wsfwm}' val2='25'> <%-- 25 = 部门内。Lin --%>
+							<input class="radioItem" type="button" value="部门" ssVal="2" name="choice"/> <%-- wdValue=。Lin --%>
+						</ss:notEqual>
+						<ss:equal val='${ws.wsfwm}' val2='25'> <%-- 25 = 部门内。Lin --%>
+							<input class="radioItem" type="button" value="成员" ssVal="2" name="choice"/> <%-- wdValue=。Lin --%>
+						</ss:equal>
+<%--					<input class="radioItem" type="button" value="群组" wdValue="3" name="choice"/> --%>
+						
+<script>
+ss.dom.formElemConfig.choice={val:'1',type:window.ss.dom.TYPE.ONOFFBTN};
+</script>
+ <%-- 先去掉 nullable="false" onClass="content-onButton" offClass="content-offButton"。Lin --%>
+					</div>
+					<div class="dragList-div" id="container" style="width: 100%;margin-bottom:10px;">
+						<div class="box">
+							<p class="label">已选<span id="ryDropAll" class="icon-allRight"></span></p>
+							<div class="list-body" style="overflow-x: hidden;width: 100%;height: 240px;">
+								<div id="rySelected" ssSelClazz="list-checkedIcon" class="scrollbar" style="height:100%">
+								</div>
+							</div>
+						</div>
+						<div class="box box2">
+							<p class="label">可选<span id="ryPickAll" class="icon-allLeft"></span></p>
+							<div class="list-body" style="overflow-x: hidden;width: 100%;height: 240px;">
+								<div id="ryOption" ssSelClazz="list-checkedIcon" class="scrollbar" style="height:100%">
+									<ss:rpt name='leaderList' id='item'>
+										<div ssObjId="${item.ryid}" ssVal="${item.ryid}" val="1" class="leader list-background" style="min-height: 41px;line-height: 41px;width: 100%;box-sizing: border-box;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;"> <%-- wdValue=。Lin --%>
+											<span class="ys_cl">${item.xm}</span>
+	<%--								<input class="radioItem" type="button" value="处理" wdValue="${item.ryid}" name="clfs" lx="1"/> --%>
+											<span style="margin-left:10px;">
+												<input class="radioItem" type="button" value="阅示" ssVal="2" name="clfs_${item.ryid}" lx="1" ysBtn=""/> <%-- wdValue=。Lin --%>
+												<input class="radioItem" type="button" value="处理" ssVal="${item.ryid}" name="clfs_${item.ryid}" lx="1" onclick="handleCl('${item.ryid}')" clBtn=""/> <%-- wdValue=。Lin --%>
+												
+<script>
+ss.dom.formElemConfig.clfs_${item.ryid}={val:'2',type:window.ss.dom.TYPE.ONOFFBTN};
+</script>
+ <%-- 先去掉 onClass="content-onButton" offClass="content-offButton" nullable="false"。Lin --%>
+											</span>
+										</div>
+									</ss:rpt>
+									<ss:notEqual val='${ws.wsfwm}' val2='25'> <%-- 25 = 部门内。Lin --%>
+										<ss:rpt name='bmList' id='item'>
+											<div ssObjId="${item.bmid}" ssVal="${item.bmid}" val="2" class="bmList list-background" style="min-height: 41px;line-height: 41px;width: 100%;box-sizing: border-box;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;"> <%-- wdValue=。Lin --%>
+												<span class="ys_cl">${item.mc}</span>
+	<%--									<input class="radioItem" type="button" value="处理" wdValue="${item.bmid}" name="clfs" lx="2"/> --%>
+												<span style="margin-left:10px;">
+													<input class="radioItem" type="button" value="阅示" ssVal="2" name="clfs_${item.bmid}" lx="2" ysBtn=""/> <%-- wdValue=。Lin --%>
+													<input class="radioItem" type="button" value="处理" ssVal="${item.bmid}" name="clfs_${item.bmid}" lx="2" onclick="handleCl('${item.bmid}')" clBtn=""/> <%-- wdValue=。Lin --%>
+													
+<script>
+ss.dom.formElemConfig.clfs_${item.bmid}={val:'2',type:window.ss.dom.TYPE.ONOFFBTN};
+</script>
+ <%-- 先去掉 onClass="content-onButton" offClass="content-offButton" nullable="false"。Lin --%>
+												</span>
+											</div>
+										</ss:rpt>
+									</ss:notEqual>
+									<ss:equal val='${ws.wsfwm}' val2='25'> <%-- 25 = 部门内。Lin --%>
+										<ss:rpt name='childList' id='item'> <%-- ="topRyList"。Lin --%>
+											<div ssObjId="${item.ryid}" ssVal="${item.ryid}" val="2" class="bmList list-background" style="min-height: 41px;line-height: 41px;width: 100%;box-sizing: border-box;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;"> <%-- wdValue=。Lin --%>
+												<span class="ys_cl">${item.xm}</span>
+	<%--									<input class="radioItem" type="button" value="处理" wdValue="${item.ryid}" name="clfs" lx="1"/> --%>
+												<span style="margin-left:10px;">
+													<ss-onoff
+v-model="clfs_${item.ryid}"
+name="clfs_${item.ryid}"
+label="阅示"
+value="2"
+:multiple="false"
+:null="false"
+placeholder="阅示"
+v-model="clfs_${item.ryid}"
+:readonly="false"
+></ss-onoff>
+ <%-- wdValue=。Lin --%>
+													<ss-onoff
+v-model="clfs_${item.ryid}"
+name="clfs_${item.ryid}"
+label="处理"
+value="${item.ryid}"
+:multiple="false"
+:null="false"
+placeholder="处理"
+v-model="clfs_${item.ryid}"
+:readonly="false"
+></ss-onoff>
+ <%-- wdValue=。Lin --%>
+													
+<script>
+ss.dom.formElemConfig.clfs_${item.ryid}={val:'2',type:window.ss.dom.TYPE.ONOFFBTN};
+</script>
+ <%-- 先去掉 onClass="content-onButton" offClass="content-offButton" nullable="false"。Lin --%>
+												</span>
+											</div>
+										</ss:rpt>
+									</ss:equal>
+									<ss:rpt name='qzList' id='item'>
+										<div ssObjId="${item.qzid}" ssVal="${item.qzid}" val="3" class="qzList list-background" style="min-height: 41px;line-height: 41px;width: 100%;box-sizing: border-box;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;"> <%-- wdValue=。Lin --%>
+											<span class="ys_cl">${item.mc}</span>
+											<span style="margin-left:10px;">
+												<input class="radioItem" type="button" value="阅示" ssVal="2" name="clfs_${item.qzid}" lx="1" ysBtn=""/> <%-- wdValue=。Lin --%>
+												
+<script>
+ss.dom.formElemConfig.clfs_${item.qzid}={val:'2',type:window.ss.dom.TYPE.ONOFFBTN};
+</script>
+ <%-- 先去掉 onClass="content-onButton" offClass="content-offButton" nullable="false"。Lin --%>
+											</span>
+										</div>
+									</ss:rpt>
+									
+<script>
+ss.dom.formElemConfig.clfs={val:'2',type:window.ss.dom.TYPE.ONOFFBTN};
+</script>
+ <%-- 先去掉 onClass="content-onButton" offClass="content-offButton"。Lin --%>
+								</div>
+							</div>
+						</div>
+					</div>
+<%-- 去掉,没用到。Lin
+					<wd:equal leftValue="${ws.wsfwm==25}" rightValue="false">
+--%>
+<%-- 放开,原被注释掉。Lin --%>
+					<div class="select-items select-others" style="top:0;margin: 5px 0px 0px 6px;">
+						<input name="under" type="button" value="及其下人员" style="margin-bottom: 10px;margin-right: 8px;" />
+						
+<script>
+ss.dom.formElemConfig.under={val:'0',type:window.ss.dom.TYPE.ONOFFBTN};
+</script>
+ <%-- 去掉 onClass="content-onButton" offClass="content-offButton"。Lin --%>
+					</div>
+<%-- 放开,原被注释掉。Lin --%>
+<%-- 去掉,没用到。Lin
+					</wd:equal>
+--%>
+				</td>
+			</tr>
+		</tbody>
+		</table>
+	</div>
+
+
+					<div class="bottom-down-div border-top">
+			<input type="button" id="test" value="确认" class="bottom-button"/>
+			<input type="button" value="关闭" class="bottom-button" onclick="wd.display.closeDialog();"/>
+					</div>
+
+
+
+<%--
+		<div class='bottom-div'>
+
+			<ss-bottom-button
+					id="saveAndCommit"
+					text="确认"
+					onclick='alert("提交表单")'
+					icon-class="bottom-div-save"
+			></ss-bottom-button>
+			<ss-bottom-button
+					text="关闭"
+					onclick='ss.display.closeDialog();'
+					icon-class="bottom-div-close"
+			></ss-bottom-button>
+		</div>
+--%>
+
+
+<input type="hidden" id="getNbListUrl" value="@service{name:'ws_ff_nb_cx'}@"/>
+<%--脚本查询拟办列表--%>
+<input type="hidden" id="updateShlbmUrl" value="@service{name:'ws_ff_nbshlbm_bc'}@"/>
+<%-- 脚本修改拟办类别为改稿类别 --%>
+<input type="hidden" id="XyshiftRyidsUrl" value="@service{name:'ws_ff_xyxgry_cx'}@"/>
+<%-- 学员查询 --%>
+<input type="hidden" id="toRyidUrl" value="<ss:serv name='ws_wrRyListByBmListByReq'/>"/> <%-- name:'ws_ff_bm2ry'。Lin --%>
+<input type="hidden" id="qzToRyidUrl" value="@service{name:'ws_ff_qz2ry'}@"/>
+<input type="hidden" id="lyUrl" value='@service{dest:"ws_ly",show:"wdDialog",param:{"id":"ssVal{id}"}}@'/>
+<%-- wsfwm大于51的用到 --%>
+<input type="hidden" id="queryRyUrl" value="@service{name:'ws_ff_xyxg_cx'}@"/>
+
+<input name='wdComponentID' type='hidden' value='ws_ff'/></form> <%-- 从上面移到这。Lin --%>
+	</div>
+</div>
+
+<%-- 原在 #app 内(line 77)被 Vue 编译时 ignore,挪到 #app 外恢复加载 by xu 20260429 --%>
+<script src="/page/biz/js/ws_dwff_specific.js"></script>
+
+<script type="text/javascript" charset="utf-8" src="/ss/js/wdDrag.js"></script>
+<script>var isWriteOut=true;var wd=wd||{};wd.drag=wd.drag||{};</script>
+<%-- setDrag 必须在 Vue mount 完成后跑,否则会被 mount 替换 DOM 抹掉拖拽事件 by xu 20260429 --%>
+<script>document.addEventListener('SSAppMounted',function(){setDrag("nb",true,["editOrder"],{})});</script>
+
+<script type="text/javascript" charset="utf-8" src="/ss/js/wdDrag.js"></script>
+<script>var isWriteOut=true;var wd=wd||{};wd.drag=wd.drag||{};</script>
+<%-- 同上,延后到 SSAppMounted 后再绑定 by xu 20260429 --%>
+<script>document.addEventListener('SSAppMounted',function(){setDrag("ry",true,["editOrder"],{})});</script>
+
+<script type="text/javascript" src="/ss/treeTable/jquery.treetable.js"></script>
+<script type="text/javascript" src="/ss/js/title.js"></script>
+<script>
+	window.onload = function() {
+		$('.list-background').addClass('list');
+	}
+</script>
+<script>
+	//页面初始化的方法
+	function handleDispense(){
+		var val = $('input[name="choice"][type="hidden"]').val();
+		$("#ryOption>div").hide();
+		$("#ryOption>div[val='"+val+"']").show();
+	}
+	// 这两段都依赖 #app 内 DOM,必须等 Vue mount 完成(SSAppMounted)后再绑定,
+	// 否则 mount 替换 DOM 时会把这里挂的 jQuery 事件全部抹掉 by xu 20260429
+	document.addEventListener('SSAppMounted', function() {
+		(function() {
+			handleDispense();
+			$('input[name="choice"][type="button"]').click(handleDispense);
+		})();
+
+		// 阅示人员校验
+		$("#test").click(function() {
+			if ($('div.nb-Div').length > 0) {
+				var _length = $("#nbSelected").find("div.list-checkedIcon").length;
+				if (_length == 0) {
+					wd.display.alert("您尚未选拟办记录");
+					return;
+				}
+			}
+			var len = $('#rySelected > div').size();
+			if (len > 0) {
+				agree();
+			} else {
+				wd.display.alert("至少选择一个人员或部门");
+			}
+		});
+	});
+
+	function bmidToRyid(bms,prefix){
+		var ryids=[];
+		if(bms&&bms.length>0){
+		}else{
+			return ryids;
+		}
+		prefix=prefix||"";
+		var under = $('input[name="under"][type="button"]').attr('class') == 'content-onButton';
+		var url = document.getElementById("toRyidUrl").value;
+		$.ajax({
+			type: "post",
+			url: url,
+			async: false,
+			data: {
+				"bms": bms,
+				"under": under
+			},
+			dataType: "json",
+			traditional: true,
+			success: function(data) {
+				//console.log(data);
+/* 改,统一 Ajax 返回标准 -- .ssCode、.ssMsg、.ssData。Lin
+				if (data.result) {
+*/			if (data.ssCode != 0) {
+					$.each(data.data, function(i, element) {
+						ryids.push(prefix+element);
+					});
+				}
+			}
+		});
+		return ryids;
+	}
+
+	//工作流成功
+	function agree() {
+		//var val = $('input[name="clfs"][type="hidden"]').val();
+		var ryids = new Array();//存动态分支并行的ryid或者blryid(blryid存入ws的jbryid);
+		var bms = new Array();//用来转换为ryids,同样最后也是放进ryids里面
+		//var bms2 = new Array();
+		//存放拟办 勾选的为拟办
+		var shidNb = new Array();
+		//存放改稿  没有勾选的为改稿
+		var shidGg=new Array();
+		var sqid = "";
+		var allDiv = $('div[id="nbSelected"]>div');
+		for (var i = 0; i < allDiv.length; i++) {
+			var id = $(allDiv[i]).attr("ssObjId");	// ("wdobjectid")。是 wdobjectid,不是 wdObjectId。Lin
+			var isSq = $(allDiv[i]).attr("isSq");
+			if ($(allDiv[i]).hasClass("list-checkedIcon") > 0) {
+				//勾选 拟办
+				if (isSq == "true") {
+					sqid = id;
+				}else{
+					shidNb.push(id);
+				}
+			} else {
+				//没有勾选  改稿
+				if (!isSq) {
+					shidGg.push(id);
+				}
+			}
+		}
+
+		//领导选项卡
+		$("#rySelected").find("div.leader").each(function(i, element) {
+			//if (element.getAttribute("wdobjectid") == $('.dragList-div .content-onButton').attr('wdvalue')) {
+			if (element.getAttribute("ssObjId") == $(element).find("[name^='clfs_']").eq(0).val()) {	// ("wdobjectid")。是 wdobjectid,不是 wdObjectId。Lin
+				ryids.push("blryid" + element.getAttribute("ssObjId"));	// ("wdobjectid"))。是 wdobjectid,不是 wdObjectId。Lin
+			} else {
+				ryids.push(element.getAttribute("ssObjId"));	// ("wdobjectid"))。是 wdobjectid,不是 wdObjectId。Lin
+			}
+		});
+
+		//部门选项卡
+		$("#rySelected").find("div.bmList").each(function(i, element) {
+			<%-- 不是部门内 --%>
+			<ss:notEqual val='${ws.wsfwm}' val2='25'> <%-- 25 = 部门内。Lin --%>
+				//if (element.getAttribute("wdobjectid") == $('.dragList-div .content-onButton').attr('wdvalue')) {
+				if (element.getAttribute("ssObjId") == $(element).find("[name^='clfs_']").eq(0).val()) {	// ("wdobjectid")。是 wdobjectid,不是 wdObjectId。Lin
+					//ryids.push("blbmid"+element.getAttribute("wdobjectid"));
+					ryids=ryids.concat(bmidToRyid([element.getAttribute("ssObjId")],"blryid"));	// ("wdobjectid")],。是 wdobjectid,不是 wdObjectId。Lin
+				} else {
+					bms.push(element.getAttribute("ssObjId"));	// ("wdobjectid"))。是 wdobjectid,不是 wdObjectId。Lin
+				}
+			</ss:notEqual>
+			<%-- 是部门内 因为部门内是直接选部门内的成员所以直接存入ryids中就行了 --%>
+			<ss:equal val='${ws.wsfwm}' val2='25'> <%-- 25 = 部门内。Lin --%>
+				ryids.push(element.getAttribute("ssObjId"));	// ("wdobjectid"))。是 wdobjectid,不是 wdObjectId。Lin
+			</ss:equal>
+		});
+		if (bms.length > 0) {
+			var under = $('input[name="under"][type="button"]').attr('class') == 'content-onButton';
+			var url = document.getElementById("toRyidUrl").value;
+			$.ajax({
+				type: "post",
+				url: url,
+				async: false,
+				data: {
+					"bms": bms,
+					"under": under
+				},
+				dataType: "json",
+				traditional: true,
+				success: function(data) {
+					console.log(data);
+					if (data.result) {
+						$.each(data.data, function(i, element) {
+							ryids.push(element);
+						});
+					}
+				}
+			});
+		}
+
+		//群组选项卡
+		var qzids=[];
+		$("#rySelected").find("div.qzList").each(function(i, element) {
+			qzids.push(element.getAttribute("ssObjId"));	// ("wdobjectid"))。是 wdobjectid,不是 wdObjectId。Lin
+		});
+		if (qzids.length > 0) {
+			var url = document.getElementById("qzToRyidUrl").value;
+			$.ajax({
+				type: "post",
+				url: url,
+				async: false,
+				data: {
+					"qzids": qzids.join(",")
+				},
+				dataType: "json",
+				traditional: true,
+				success: function(result) {
+					if (result) {
+						$.each(result, function(i, item) {
+							ryids.push(item.ryid);
+						});
+					}
+				}
+			});
+		}
+
+		// 处理人员
+		/*var clrys = [];
+		$('[name^="clfs_"]').each(function() {
+				var _this = $(this)[0]
+				if(_this.className == "" && _this.value != 2) {
+					clrys.push(_this.value)
+				}
+		})
+		$('[name="clfs"]').val(clrys.toString().replace(/\,/g, "|"))*/
+
+		var ryidList = ryids.toString().replace(/\,/g, "|");
+		if (ryidList == "") {
+			wd.display.alert("所选择的区域无适当人选");
+		} else {
+			var ryidArr = ryidList.split(",");
+			var f = document.getElementById("myForm");
+/* 改。Lin
+ * 去掉 sfty:1 和 sm:'单位分发处理',服务 ws_submFf 没用到
+			var formUrl = "@service{name:'ws_ff_dw_tj',dest:'sys_info',param:{sqid:'ssVal{sqid}',shidNb:'ssVal{shidNb}',shidGg:'ssVal{shidGg}',shid:'${shid}',sfty:1,sm:'单位分发处理'}}@";
+*/		var formUrl = "<ss:serv name='ws_submFf' dest='info'/>";
+			f.action = wd.display.replaceDynamicParam(formUrl, {
+					"shidNb": shidNb,
+					"shidGg": shidGg,
+					"sqid": sqid
+			});
+			$('#ryidList').val(ryidList);
+			f.submit();
+		}
+	}
+
+	//工作流失败
+	function reject() {
+		var f = document.getElementById('myForm');
+/* 改,再去掉 check("审核"),直接用 "ss.agrTask" 或 "ss.rejTask"
+		f.action = "@service{name:'check',dest:'sys_info',param:{shid:'${shid}',sfty:0}}@";
+*/	f.action = "<ss:serv name='rejTask' parm='{"shid":"${shid}"}' dest='info'/>";
+		f.submit();
+	}
+
+	function handleCl(id) {
+		//$("[name='clfs_' + id]").val(2)
+		$('[name^="clfs_"][type="hidden"]').each(function() {
+			$(this).val(2)
+		})
+		//$('[name^="clfs_"][wdvalue="2"]').each(function() {
+		$('[ysBtn]').each(function() {
+			$(this).removeClass("content-offButton").addClass("content-onButton")
+		})
+		$('[clBtn]').each(function() {
+			$(this).removeClass("content-onButton").addClass("content-offButton")
+		})
+	}
+</script>
+<%-- 去掉,没用到。Lin
+<script type="text/javascript">
+	var data1 = '${nbList}';
+</script>
+--%>
+
+<script type="text/javascript">
+// 操作 #ryOption(在 #app 内),必须等 Vue mount 完成后再跑,否则操作的是会被替换掉的旧 DOM by xu 20260429
+document.addEventListener('SSAppMounted', function() {
+	//把备选框中的所有子DIV,重新显示出来 Ben(20260428)
+	const parentDiv = document.getElementById('ryOption');
+
+	if (parentDiv) {
+		// 获取所有直接子DIV元素
+		const directChildDivs = Array.from(parentDiv.children).filter(child => child.tagName === 'DIV');
+
+		// 或者使用querySelector选择器
+		// const directChildDivs = parentDiv.querySelectorAll(':scope > div');
+
+		directChildDivs.forEach(div => {
+			div.style.display = '';
+		});
+	}
+});
+</script>
+
+<script type="text/javascript">var wdRecordValue='${wdRecordValue}';</script>
+<script type="text/javascript" src="/ss/js/wdRecord.js"></script>
+<script type="text/javascript">(function(){wdRecord("ws_ff");})();</script>
+<script type="text/javascript" src="/ss/js/wdFitHeight.js"></script>
+<script type="text/javascript">initWdFitHeight(48)</script>
+<script type="text/javascript">initWdFitHeightFunction=function(){initWdFitHeight(48);};</script>
+<ss:equal val="${empty resizeComponent}" val2="false">
+<script>{var iframe=wd.display.getFrameOfWindow();
+if(iframe&&iframe.contentWindow==window)
+wd.display.resizeComponent(${resizeComponent.width}, ${resizeComponent.height}, ${empty resizeComponent.minHeight?'null':resizeComponent.minHeight}, ${empty resizeComponent.maxHeight?'null':resizeComponent.maxHeight});}</script>
+</ss:equal>
+<ss:help/>
+</body>
+<script type="text/javascript">
+try{wd.display.showMsgPopup('${msg}');
+}catch(err){console.error(err);}
+</script>
+<ss:equal val="${empty wdclosewindowparam}" val2="false">
+<script type="text/javascript">
+try{wd.display.setCloseWindowParam('${wdclosewindowparam}');
+}catch(err){console.error(err);}
+</script>
+</ss:equal>
+</html>
+<%@ include file="/page/clip/footer.jsp" %>