更改实名制-施工人员管理页面代码

This commit is contained in:
lSun 2025-12-09 19:19:28 +08:00
parent efdc90e439
commit 18e3905264
5 changed files with 372 additions and 229 deletions

View File

@ -76,32 +76,51 @@
<input type="hidden" id="id" name="id"> <input type="hidden" id="id" name="id">
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label"><i class="tip-required" style="color: red; font-size: 20px">*</i>用户名</label> <label class="layui-form-label"><i class="tip-required"
style="color: red; font-size: 20px">*</i>用户名</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input maxlength="30" minlength="2" type="text" id="userName" name="userName" required lay-verify="required" class="layui-input" /> <input maxlength="30" minlength="2" type="text" id="userName" name="userName" required
lay-verify="required" class="layui-input"/>
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label"><i class="tip-required" style="color: red; font-size: 20px">*</i>登录名</label> <label class="layui-form-label"><i class="tip-required"
style="color: red; font-size: 20px">*</i>登录名</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input maxlength="30" minlength="2" type="text" id="loginName" name="loginName" required lay-verify="required" class="layui-input" /> <input maxlength="30" minlength="2" type="text" id="loginName" name="loginName" required
lay-verify="required" class="layui-input"/>
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label"><i class="tip-required" style="color: red; font-size: 20px">*</i>联系方式:</label> <label class="layui-form-label">是否管理员:</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input maxlength="11" type="text" id="phone" name="phone" required lay-verify="required|phone" class="layui-input" /> <select name="isAdmin" id="isAdmin">
<option value="0">不是</option>
<option value="1"></option>
</select>
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label"><i class="tip-required" style="color: red; font-size: 20px">*</i>系统:</label> <label class="layui-form-label"><i class="tip-required"
style="color: red; font-size: 20px">*</i>联系方式:</label>
<div class="layui-input-block">
<input maxlength="11" type="text" id="phone" name="phone" required lay-verify="required|phone"
class="layui-input"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><i class="tip-required"
style="color: red; font-size: 20px">*</i>系统:</label>
<div class="layui-input-block" id="types"> <div class="layui-input-block" id="types">
<input type="checkbox" name="permissionType" value="1" title="实名制" id="smz"> <input type="checkbox" name="permissionType" value="1" title="承载力后台" id="czl_1">
<input type="checkbox" name="permissionType" value="2" title="领导履职" id="ldlz"> <input type="checkbox" name="permissionType" value="2" title="承载力大屏" id="czl_2">
<input type="checkbox" name="permissionType" value="3" title="承载力" id="czl"> <input type="checkbox" name="permissionType" value="3" title="领导履职" id="ldlz">
<input type="checkbox" name="permissionType" value="4" title="自有人员" id="smz_1">
<input type="checkbox" name="permissionType" value="5" title="自有人员大屏" id="smz_2">
</div> </div>
</div> </div>
@ -132,7 +151,8 @@
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label"><i class="tip-required" style="color: red; font-size: 20px">*</i>角色</label> <label class="layui-form-label"><i class="tip-required"
style="color: red; font-size: 20px">*</i>角色</label>
<div class="layui-input-block"> <div class="layui-input-block">
<select id="roles" name="roleId" lay-filter="roleId"></select> <select id="roles" name="roleId" lay-filter="roleId"></select>
<span id="qxSpan" style="color: red;display: none"></span> <span id="qxSpan" style="color: red;display: none"></span>
@ -143,7 +163,8 @@
<div class="layui-form-item" id="idCard" style="display: none"> <div class="layui-form-item" id="idCard" style="display: none">
<label class="layui-form-label"><i class="tip-required" style="color: red; font-size: 20px">*</i>身份证</label> <label class="layui-form-label"><i class="tip-required" style="color: red; font-size: 20px">*</i>身份证</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input maxlength="18" type="text" id="idNumber" name="idNumber" onchange="querys()" class="layui-input"> <input maxlength="18" type="text" id="idNumber" name="idNumber" onchange="querys()"
class="layui-input">
</div> </div>
</div> </div>
@ -162,7 +183,8 @@
</div> </div>
<div class="layui-form-item" id="team" style="display: none"> <div class="layui-form-item" id="team" style="display: none">
<label class="layui-form-label"><i class="tip-required" style="color: red; font-size: 20px">*</i>班组</label> <label class="layui-form-label"><i class="tip-required"
style="color: red; font-size: 20px">*</i>班组</label>
<div class="layui-input-block"> <div class="layui-input-block">
<select id="teamId" name="teamId" lay-filter="teamId"></select> <select id="teamId" name="teamId" lay-filter="teamId"></select>
</div> </div>
@ -173,10 +195,65 @@
<div class="layui-form-item" id="ldlzqx" style="border: 3px solid #F0F0F0;padding: 10px;margin: 10px;"> <div class="layui-form-item" id="ldlzqx" style="border: 3px solid #F0F0F0;padding: 10px;margin: 10px;">
<h2>领导履职系统</h2> <h2>领导履职系统</h2>
<div class="layui-form-item">
<label class="layui-form-label"><i class="tip-required"
style="color: red;font-size: 20px">*</i>部门:</label>
<div class="layui-input-block">
<div class="layui-input-inline" style="width: 100%;">
<div style="border: 0.5px solid #E6E6E6;height: 37px;text-indent: 10px;">
<input class="FormElement ui-widget-content ui-corner-all" id="departmentldlz"
readonly="readonly" value="点击进行部门选择" jyValidate="required" type="text"
onclick="showRoleLdlz(); return false;"
style="border: 0; margin-top: 1%;width: 100%; color: #757575;"/>
<input type="hidden" id="departmentIdldlz" name="departmentIdldlz">
<div id='orgContentldlz' class="menuContent ztreeMC">
<ul id="departmentTreeldlz" class="ztree accountOrgTree"></ul>
</div>
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><i class="tip-required"
style="color: red;font-size: 20px">*</i>角色:</label>
<div class="layui-input-block">
<select id="roleIdLdlz" class="layui-select" name="roleIdLdlz" lay-verify="required"></select>
</div>
</div>
</div> </div>
<div class="layui-form-item" id="czlqx" style="border: 3px solid #F0F0F0;padding: 10px;margin: 10px;"> <div class="layui-form-item" id="czlqx" style="border: 3px solid #F0F0F0;padding: 10px;margin: 10px;">
<h2>承载力系统</h2> <h2>承载力系统</h2>
<div class="layui-form-item">
<label class="layui-form-label"><i class="tip-required"
style="color: red;font-size: 20px">*</i>部门:</label>
<div class="layui-input-block">
<div class="layui-input-inline" style="width: 100%;">
<div style="border: 0.5px solid #E6E6E6;height: 37px;text-indent: 10px;">
<input class="FormElement ui-widget-content ui-corner-all" id="department"
readonly="readonly" value="点击进行部门选择" jyValidate="required" type="text"
onclick="showRoleCzl(); return false;"
style="border: 0; margin-top: 1%;width: 100%; color: #757575;"/>
<input type="hidden" id="departmentId" name="departmentId">
<div id='orgContentCzl' class="menuContent ztreeMC">
<ul id="departmentTree" class="ztree accountOrgTree"></ul>
</div>
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><i class="tip-required"
style="color: red;font-size: 20px">*</i>角色:</label>
<div class="layui-input-block">
<select id="roleIdCzl" class="layui-select" name="roleIdCzl" lay-verify="required"></select>
</div>
</div>
</div> </div>
<div class="layui-form-item" style="display: none"> <div class="layui-form-item" style="display: none">
@ -195,7 +272,10 @@
<script type="text/javascript" src="../../smz-web/js/common.js"></script> <script type="text/javascript" src="../../smz-web/js/common.js"></script>
<script type="text/javascript" src="../../smz-web/layui/layui.js"></script> <script type="text/javascript" src="../../smz-web/layui/layui.js"></script>
<script src="../public.js"></script> <script src="../public.js"></script>
<script type="text/javascript" src="../login/js/treeBind.js"></script>
<script type="text/javascript" src="../login/js/companyTree.js"></script> <script type="text/javascript" src="../login/js/companyTree.js"></script>
<script type="text/javascript" src="../login/js/companyTreeCzl.js"></script>
<script type="text/javascript" src="../login/js/companyTreeLdlz.js"></script>
<script type="text/javascript"> <script type="text/javascript">
@ -228,34 +308,37 @@
}, },
}); });
initTree(); // initTree();
// 初始化:隐藏所有权限区域 // 初始化:隐藏所有权限区域
$('#smzqx, #ldlzqx, #czlqx').hide(); $('#smzqx, #ldlzqx, #czlqx').hide();
// 监听 checkbox 变化Layui 方式) // 监听 checkbox 变化Layui 方式)
// 系统checkbox变化 // 系统checkbox变化
form.on('checkbox', function (data) { form.on('checkbox', function (data) {
var value = data.value; var value = data.value;
var checked = data.elem.checked; var checked = data.elem.checked;
var map = {
var map = {'1':'smzqx','2':'ldlzqx','3':'czlqx'}; '1': 'czlqx', // 承载力后台
'2': 'czlqx', // 承载力大屏
'3': 'ldlzqx', // 领导履职
'4': 'smzqx', // 自有人员
'5': 'smzqx' // 自有人员大屏
};
var targetId = map[value]; var targetId = map[value];
if (targetId) { if (targetId) {
$('#' + targetId).toggle(checked); if (value == '1' || value == '2') {
// 检查是否至少有一个承载力被选中
// 实名制动态必填 var czlChecked = $('#czl_1').is(':checked') || $('#czl_2').is(':checked');
if(targetId==='smzqx'){ $('#czlqx').toggle(czlChecked);
// 姓名/公司/角色/身份证 getRoleCzl(form, null);
// $('#orgName').attr('lay-verify', checked ? 'required' : ''); loadOrgTree();
$('#userName').attr('lay-verify', checked ? 'required' : ''); } else if (value == '4' || value == '5') {
$('#phone').attr('lay-verify', checked ? 'required|phone' : ''); var smzChecked = $('#smz_1').is(':checked') || $('#smz_2').is(':checked');
$('#orgName').attr('lay-verify', checked ? 'required' : ''); $('#smzqx').toggle(smzChecked)
$('#roles').attr('lay-verify', checked ? 'required' : ''); } else if (value == '3') {
$('#idNumber').attr('lay-verify', checked && $('#idCard').is(':visible') ? 'required|foremanIdNumber' : ''); $('#ldlzqx').toggle(checked);
$('#proId').attr('lay-verify', checked && $('#pro').is(':visible') ? 'required' : ''); getRoleLdlz(form, null);
$('#subId').attr('lay-verify', checked && $('#sub').is(':visible') ? 'required' : ''); loadOrgTreeLdlz();
$('#teamId').attr('lay-verify', checked && $('#team').is(':visible') ? 'required' : '');
} }
} }
form1.render(); form1.render();
@ -278,38 +361,47 @@
form.on('submit(formDemo)', function (data) { form.on('submit(formDemo)', function (data) {
clearErrors(); // 先清除所有错误样式 clearErrors(); // 先清除所有错误样式
if ($('#smz').is(':checked')) { var dataType = data.field.permissionType;
if (dataType) {
if ($('#smz_1').is(':checked') || $('#smz_2').is(':checked')) {
var hasError = false; var hasError = false;
if (!$('#userName').val()) { if (!$('#userName').val()) {
showError($('#userName'), '请输入用户名!'); showError($('#userName'), '请输入用户名!');
hasError = true; hasError = true;
} } else if (!/^1\d{10}$/.test($('#phone').val())) {
else if (!/^1\d{10}$/.test($('#phone').val())) {
showError($('#phone'), '手机号格式不正确!'); showError($('#phone'), '手机号格式不正确!');
hasError = true; hasError = true;
} } else if (!$('#orgId').val()) {
else if (!$('#orgId').val()) {
showError($('#orgName'), '请选择分公司!'); showError($('#orgName'), '请选择分公司!');
hasError = true; hasError = true;
} } else if (!$('#roles').val()) {
else if (!$('#roles').val()) {
showError($('#roles'), '请选择角色!'); showError($('#roles'), '请选择角色!');
hasError = true; hasError = true;
} else if (!$('#proId').val()) {
showError($('#proId'), '请选择工程名称!');
hasError = true;
} else if (!$('#subId').val()) {
showError($('#subId'), '请选择分包商!');
hasError = true;
} else if (!$('#teamId').val()) {
showError($('#teamId'), '请选择班组!');
hasError = true;
} }
// ... 其他字段类似处理
if (hasError) { if (hasError) {
return false; // 阻止提交 return false; // 阻止提交
} }
} }
add(data); // 触发你的提交函数 add(data); // 触发你的提交函数
} else {
layer.msg('请选择系统类型!', {icon: 5});
}
return false; // 阻止默认跳转 return false; // 阻止默认跳转
}); });
}); });
function add(data) { function add(data) {
console.log( "aa=",data)
var fieldData = data.field || {}; var fieldData = data.field || {};
// 构建请求参数 // 构建请求参数
var requestData = { var requestData = {
@ -324,7 +416,8 @@
dataType: fieldData.permissionType || null, // 注意:后端可能期望 "type" 而不是 "permissionType" dataType: fieldData.permissionType || null, // 注意:后端可能期望 "type" 而不是 "permissionType"
sex: fieldData.sex || null, sex: fieldData.sex || null,
teamId: fieldData.teamId || null, teamId: fieldData.teamId || null,
idCard: fieldData.idNumber || null idCard: fieldData.idNumber || null,
isAdmin: fieldData.isAdmin || null
}; };
$.ajax({ $.ajax({
type: 'post', type: 'post',
@ -345,14 +438,14 @@
// 获取工程列表 // 获取工程列表
function getProInfo(orgId, proId){ function getProInfo(companyId, proId) {
var select = $('#proId'); var select = $('#proId');
select.empty(); select.empty();
select.append('<option value="">请选择工程</option>'); select.append('<option value="">请选择工程</option>');
$.ajax({ $.ajax({
type: 'post', type: 'post',
url: request_url + '/realname/publicLogin/getProList', url: request_url + '/realname/publicLogin/getProList',
data: {companyId: orgId}, data: {companyId: companyId},
async: false, async: false,
success: function (data) { success: function (data) {
var data = data.data; var data = data.data;
@ -375,7 +468,10 @@
var select = $('#subId'); var select = $('#subId');
select.empty(); select.empty();
select.append('<option value="">请选择分包商</option>'); select.append('<option value="">请选择分包商</option>');
if(!proId){ layui.form.render('select'); return; } if (!proId) {
layui.form.render('select');
return;
}
$.ajax({ $.ajax({
type: 'post', type: 'post',
url: request_url + '/realname/publicLogin/getSubList', url: request_url + '/realname/publicLogin/getSubList',
@ -422,7 +518,6 @@
} }
// 初始化角色列表 // 初始化角色列表
function initRoles(companyId, orgId) { function initRoles(companyId, orgId) {
var select = $('#roles'); var select = $('#roles');
@ -544,7 +639,6 @@
getProInfo(orgId, ""); getProInfo(orgId, "");
initRoles(companyId, orgId); initRoles(companyId, orgId);
getSubInfoByCompanyId(companyId, ""); getSubInfoByCompanyId(companyId, "");
// getPostInfo(companyId);
$("#idNumber").val(""); $("#idNumber").val("");
findSubType("", ""); findSubType("", "");
@ -557,13 +651,15 @@
} }
// 查询班组 // 查询班组
function findSubType(subId, ids) { function findSubType(subId, ids) {
var select = $('#teamId'); var select = $('#teamId');
select.empty(); select.empty();
select.append('<option value="">请选择班组</option>'); select.append('<option value="">请选择班组</option>');
if(!subId){layui.form.render('select'); return;} if (!subId) {
layui.form.render('select');
return;
}
$.ajax({ $.ajax({
type: 'post', type: 'post',
url: request_url + '/realname/publicLogin/getTeamList', url: request_url + '/realname/publicLogin/getTeamList',
@ -571,11 +667,18 @@
async: false, async: false,
dataType: 'json', dataType: 'json',
success: function (data) { success: function (data) {
if (data.code == 200) {
var data = data.data;
data.forEach(function (d) { data.forEach(function (d) {
select.append('<option value="' + d.id + '">' + d.name + '</option>'); select.append('<option value="' + d.id + '">' + d.name + '</option>');
}); });
if (ids) select.val(ids); if (ids) select.val(ids);
layui.form.render('select'); layui.form.render('select');
} else {
layer.msg(data.msg);
select.empty();
return;
}
} }
}); });
} }
@ -593,7 +696,6 @@
}, },
dataType: 'json', dataType: 'json',
success: function (data) { success: function (data) {
var data = data.data;
if (data.code == 200) { if (data.code == 200) {
var pro = document.getElementById("pro"); var pro = document.getElementById("pro");
var sub = document.getElementById("sub"); var sub = document.getElementById("sub");
@ -601,19 +703,19 @@
pro.style.display = "block"; pro.style.display = "block";
sub.style.display = "block"; sub.style.display = "block";
team.style.display = "block"; team.style.display = "block";
if (data.obj.length > 0) { if (data.data.length > 0) {
if (data.obj[0].einStatus == "1") { if (data.data[0].einStatus == "1") {
getProInfo(ns, data.obj[0].proId); getProInfo(ns, data.data[0].proId);
getSubInfo(data.obj[0].proId, data.obj[0].subId); getSubInfo(data.data[0].proId, data.data[0].subId);
findSubType(data.obj[0].subId, data.obj[0].teamId); findSubType(data.data[0].subId, data.data[0].teamId);
$("#orgName").val(data.obj[0].orgName); $("#orgName").val(data.data[0].orgName);
$("#companyId").val(data.obj[0].companyId); $("#companyId").val(data.data[0].companyId);
$("#auForm input[name$='orgId']").prop("value", data.obj[0].orgId); $("#auForm input[name$='orgId']").prop("value", data.data[0].orgId);
} else { } else {
getProInfo(ns, data.obj[0].proId); getProInfo(ns, data.data[0].proId);
getSubInfo(data.obj[0].proId, data.obj[0].subId); getSubInfo(data.data[0].proId, data.data[0].subId);
findSubType(data.obj[0].subId, data.obj[0].teamId); findSubType(data.data[0].subId, data.data[0].teamId);
} }
} else { } else {
getProInfo(ns, ""); getProInfo(ns, "");
@ -673,9 +775,6 @@
} }
}, 150); }, 150);
} }
</script> </script>
</body> </body>

View File

@ -1,86 +1,11 @@
var token = localStorage.getItem("public_token") bindTreeSelector({
// 初始化树节点 inputTextId: "orgName",
function initTree() { inputValueId: "orgId",
$.ajax({ panelId: "orgContent",
type: 'POST', treeId: "orgTree",
headers : { ajaxUrl: request_url + "/realname/publicLogin/getDeptTree",
"token" : token extraSet: function (node) {
}, $("#companyId").val(node.companyId || "");
url: request_url + '/realname/publicLogin/getDeptTree', loadCompanyInfo(node.id, node.companyId);
data: {},
dataType: 'json',
success: function (data) {
$.fn.zTree.init($("#orgTree"),{
view:{
dblClickExpand:false,
selectedMulti:false,
nameIsHTML:true
},
data:{
simpleData:{
enable: true
} }
},
callback:{
onClick:clickRole
}
}, data.data);
},
error: function (e) {
console.log(e.resMsg);
},
}); });
}
var preisShow=false;//窗口是否显示
function showRole() {
if(preisShow){
hideRole();
}else{
var obj = $("#orgName");
var offpos = $("#orgName").position();
$("#orgContent").css({left:offpos.left+"px",top:offpos.top+obj.heigth+"px"}).slideDown("fast");
preisShow=true;
}
}
function emptyRole(){
$("#orgName").prop("value","");
$("#auForm input[name$='orgId']").prop("value","0");
}
function hideRole(n,c){
$("#orgId").val(n);
$("#companyId").val(c);
$("#orgContent").fadeOut("fast");
preisShow=false;
loadCompanyInfo(n,c);
}
function clickRole(e, treeId, treeNode) {
// var check = (treeNode && !treeNode.isParent);
var check = (treeNode);
if(check){
var zTree = $.fn.zTree.getZTreeObj("orgTree"),
nodes = zTree.getSelectedNodes(),v ="",n ="",o="",p="",c="";
for (var i=0, l=nodes.length; i<l; i++) {
v += nodes[i].name + ",";//获取name值
n += nodes[i].id + ",";//获取id值
o += nodes[i].other + ",";//获取自定义值
c += nodes[i].companyId + ",";
var pathNodes=nodes[i].getPath();
for(var y=0;y<pathNodes.length;y++){
p+=pathNodes[y].name+"/";//获取path/name值
}
}
if (v.length > 0 ) v = v.substring(0, v.length-1);
if (n.length > 0 ) n = n.substring(0, n.length-1);
if (o.length > 0 ) o = o.substring(0, o.length-1);
if (p.length > 0 ) p = p.substring(0, p.length-1);
if (c.length > 0 ) c = c.substring(0, c.length-1);
$("#orgName").val(p);
$("#companyId").val(c);
$("#auForm input[name$='orgId']").prop("value",n);
hideRole(n,c);
}
}

View File

@ -0,0 +1,12 @@
bindTreeSelector({
inputTextId: "department",
inputValueId: "departmentId",
panelId: "orgContentCzl",
treeId: "departmentTree",
ajaxUrl: request_url + "/czl/publicLogin/getDeptTree",
extraSet: function (node) {
examPerfession = node.id;
isParent = node.isParent;
typeId = node.type;
}
});

View File

@ -0,0 +1,12 @@
bindTreeSelector({
inputTextId: "departmentldlz",
inputValueId: "departmentIdldlz",
panelId: "orgContentLdlz",
treeId: "departmentTreeldlz",
ajaxUrl: request_url + "/ldlz/publicLogin/getDeptTree",
extraSet: function (node) {
examPerfessionLdlz = node.id;
isParentLdlz = node.isParent;
typeIdLdlz = node.type;
}
});

View File

@ -0,0 +1,95 @@
// 通用树组件:绑定一个树选择器
function bindTreeSelector(options) {
const {
inputTextId, // 点击显示树的文本框 ID
inputValueId, // 隐藏 valueID字段 ID
panelId, // 树的弹出容器 ID
treeId, // zTree 的 <ul> 元素 ID
ajaxUrl, // 获取树结构的接口
extraSet = null // 点击节点时执行的额外逻辑(可选)
} = options;
let panelVisible = false;
// 1. 初始化树
function loadTree() {
$.ajax({
type: "post",
url: ajaxUrl,
dataType: "json",
success: function (res) {
$.fn.zTree.init($("#" + treeId), {
view: { dblClickExpand: false, selectedMulti: false, nameIsHTML: true },
data: { simpleData: { enable: true } },
callback: {
onClick: onNodeClick
}
}, res.data || res.obj);
},
error: function () {
console.error("树加载失败:" + ajaxUrl);
}
});
}
loadTree();
// 2. 显示/隐藏
function togglePanel() {
if (panelVisible) {
hidePanel();
} else {
const $input = $("#" + inputTextId);
const pos = $input.position();
$("#" + panelId)
.css({
left: pos.left + "px",
top: pos.top + $input.outerHeight() + "px",
width: $input.outerWidth() + "px"
})
.slideDown("fast");
panelVisible = true;
}
}
function hidePanel() {
$("#" + panelId).fadeOut("fast");
panelVisible = false;
}
// 3. 点击树节点事件
function onNodeClick(event, tid, node) {
if (!node) return;
const zTree = $.fn.zTree.getZTreeObj(treeId);
const pathNodes = node.getPath();
let pathText = pathNodes.map(n => n.name).join("/");
let idValue = node.id;
$("#" + inputTextId).val(pathText);
$("#" + inputValueId).val(idValue);
if (extraSet && typeof extraSet === "function") {
extraSet(node);
}
hidePanel();
}
// 4. 点击输入框显示树
$("#" + inputTextId).on("click", function () {
togglePanel();
return false;
});
// 点击空白关闭(如需要)
$(document).on("click", function (e) {
if (!$(e.target).closest("#" + panelId).length &&
!$(e.target).is("#" + inputTextId)) {
hidePanel();
}
});
}