first commit

This commit is contained in:
2025-02-20 14:59:35 +08:00
parent d7be84fac6
commit d4a3bb8ffc
2541 changed files with 336536 additions and 0 deletions
+128
View File
@@ -0,0 +1,128 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ZHIQIM-CONTEXT PUBLIC "-//ZHIQIM //DTD Zhiqim-Context Configuration 1.5.0//EN" "http://zhiqim.org/xmldtds/zhiqim_context_1_5_0.dtd">
<zhiqim-context>
<!-- 属性配置 -->
<attribute name="系统名称" key="name" value="管理平台"/>
<attribute name="系统版本" key="version" value="V1.0.0"/>
<attribute name="系统引导" key="bootstrap" value="org.zhiqim.manager.ZmrBootstrap"/>
<attribute name="管理台菜单" key="zmr_menu_sql" value="/conf/zmr.menu.sql"/>
<attribute name="管理台路径" key="zhiqim_manager" value="manager"/>
<!-- 拦截器 -->
<interceptor name="检查登录" key="chkZmrLogin" class="org.zhiqim.manager.ZmrInterceptor"/>
<!-- 基本内容 -->
<action name="首页" path="/index.htm" view="/ztmpl/zhiqim_manager/index.htm" class="org.zhiqim.manager.action.IndexAction"/>
<action name="管理页" path="/${zhiqim_manager}.htm" view="/ztmpl/zhiqim_manager/index.htm" class="org.zhiqim.manager.action.IndexAction"/>
<action name="退出" path="/${zhiqim_manager}/logout.htm" redirect="/index.htm" class="org.zhiqim.manager.action.LogoutAction"/>
<action name="头像" path="/${zhiqim_manager}/avatar/*/*.png" class="org.zhiqim.manager.action.AvatarAction" method="access"/>
<!-- 主页 -->
<action name="主页" interceptor="chkZmrLogin" path="/${zhiqim_manager}/main.htm" view="/ztmpl/zhiqim_manager/template.htm" include="/zview/zhiqim_manager/main.zml" class="org.zhiqim.manager.action.MainAction" />
<action name="主页框架" interceptor="chkZmrLogin" path="/${zhiqim_manager}/welcome.htm" view="/ztmpl/zhiqim_manager/template.htm" include="/zview/zhiqim_manager/main.zml" class="org.zhiqim.manager.action.MainAction" />
<action name="用户中心" interceptor="chkZmrLogin" path="/${zhiqim_manager}/profile.htm" view="/ztmpl/zhiqim_manager/template.htm" include="/zview/zhiqim_manager/profile.zml" class="org.zhiqim.manager.action.ProfileAction" />
<!-- 系统管理 -->
<action name="系统菜单列表" interceptor="chkZmrLogin" path="/${zhiqim_manager}/menu.htm" view="/ztmpl/zhiqim_manager/template.htm" include="/zview/zhiqim_manager/menu.zml" class="org.zhiqim.manager.action.MenuAction" method="list"/>
<action name="增加菜单页面" interceptor="chkZmrLogin" path="/${zhiqim_manager}/menuAdd.htm" view="/ztmpl/zhiqim_manager/template.htm" include="/zview/zhiqim_manager/menuAdd.zml" class="org.zhiqim.manager.action.MenuAction" method="add"/>
<action name="增加菜单处理" interceptor="chkZmrLogin" path="/${zhiqim_manager}/menuInsert.htm" redirect="/${zhiqim_manager}/menu.htm" class="org.zhiqim.manager.action.MenuAction" method="insert" success="增加成功"/>
<action name="修改菜单页面" interceptor="chkZmrLogin" path="/${zhiqim_manager}/menuModify.htm" view="/ztmpl/zhiqim_manager/template.htm" include="/zview/zhiqim_manager/menuModify.zml" class="org.zhiqim.manager.action.MenuAction" method="modify"/>
<action name="修改菜单处理" interceptor="chkZmrLogin" path="/${zhiqim_manager}/menuUpdate.htm" redirect="/${zhiqim_manager}/menu.htm" class="org.zhiqim.manager.action.MenuAction" method="update" success="修改成功"/>
<action name="删除菜单处理" interceptor="chkZmrLogin" path="/${zhiqim_manager}/menuDelete.htm" redirect="/${zhiqim_manager}/menu.htm" class="org.zhiqim.manager.action.MenuAction" method="delete" success="删除成功"/>
<action name="系统配置设置" interceptor="chkZmrLogin" path="/${zhiqim_manager}/config.htm" view="/ztmpl/zhiqim_manager/template.htm" include="/zview/zhiqim_manager/config.zml" redirect="/${zhiqim_manager}/config.htm" class="org.zhiqim.manager.action.ConfigAction"/>
<action name="系统参数设置" interceptor="chkZmrLogin" path="/${zhiqim_manager}/param.htm" view="/ztmpl/zhiqim_manager/template.htm" include="/zview/zhiqim_manager/param.zml" redirect="/${zhiqim_manager}/param.htm" class="org.zhiqim.manager.action.ParamAction"/>
<action name="更换首页主题风格" interceptor="chkZmrLogin" path="/${zhiqim_manager}/themeIndex.htm" view="/ztmpl/zhiqim_manager/template.htm" include="/zview/zhiqim_manager/themeIndex.zml" redirect="/${zhiqim_manager}/themeIndex.htm" class="org.zhiqim.manager.action.ThemeIndexAction"/>
<action name="更换主页主题风格" interceptor="chkZmrLogin" path="/${zhiqim_manager}/themeMain.htm" view="/ztmpl/zhiqim_manager/template.htm" include="/zview/zhiqim_manager/themeMain.zml" redirect="/${zhiqim_manager}/themeMain.htm" class="org.zhiqim.manager.action.ThemeMainAction"/>
<action name="系统缓存管理" interceptor="chkZmrLogin" path="/${zhiqim_manager}/cache.htm" view="/ztmpl/zhiqim_manager/template.htm" include="/zview/zhiqim_manager/cache.zml" redirect="/${zhiqim_manager}/cache.htm" class="org.zhiqim.manager.action.CacheAction"/>
<action name="密钥对设置" interceptor="chkZmrLogin" path="/${zhiqim_manager}/keys.htm" view="/ztmpl/zhiqim_manager/template.htm" include="/zview/zhiqim_manager/keys.zml" redirect="/${zhiqim_manager}/keys.htm" class="org.zhiqim.manager.action.KeysAction" success="生成成功"/>
<action name="进程状态查询" interceptor="chkZmrLogin" path="/${zhiqim_manager}/process.htm" view="/ztmpl/zhiqim_manager/template.htm" include="/zview/zhiqim_manager/process.zml" />
<action name="进程线程堆栈信息" interceptor="chkZmrLogin" path="/${zhiqim_manager}/processThreadStack.htm" view="/ztmpl/zhiqim_manager/inner.htm" include="/zview/zhiqim_manager/processThreadStack.zml" class="org.zhiqim.manager.action.ProcessThreadStackAction"/>
<!-- 操作员参数管理 -->
<action name="操作员参数列表" interceptor="chkZmrLogin" path="/${zhiqim_manager}/paramOperator.htm" view="/ztmpl/zhiqim_manager/template.htm" include="/zview/zhiqim_manager/paramOperator.zml" class="org.zhiqim.manager.action.ParamOperatorAction" method="list"/>
<action name="增加操作员参数页面" interceptor="chkZmrLogin" path="/${zhiqim_manager}/paramOperatorAdd.htm" view="/ztmpl/zhiqim_manager/template.htm" include="/zview/zhiqim_manager/paramOperatorAdd.zml" class="org.zhiqim.manager.action.ParamOperatorAction" method="add"/>
<action name="增加操作员参数处理" interceptor="chkZmrLogin" path="/${zhiqim_manager}/paramOperatorInsert.htm" redirect="/${zhiqim_manager}/paramOperator.htm" class="org.zhiqim.manager.action.ParamOperatorAction" method="insert" success="增加成功"/>
<action name="删除操作员参数处理" interceptor="chkZmrLogin" path="/${zhiqim_manager}/paramOperatorDelete.htm" redirect="/${zhiqim_manager}/paramOperator.htm" class="org.zhiqim.manager.action.ParamOperatorAction" method="delete" success="删除成功"/>
<!-- 头像管理 -->
<action name="头像列表" interceptor="chkZmrLogin" path="/${zhiqim_manager}/avatar.htm" view="/ztmpl/zhiqim_manager/template.htm" include="/zview/zhiqim_manager/avatar.zml" class="org.zhiqim.manager.action.AvatarAction" method="list"/>
<action name="修改头像页面" interceptor="chkZmrLogin" path="/${zhiqim_manager}/avatarModify.htm" view="/ztmpl/zhiqim_manager/template.htm" include="/zview/zhiqim_manager/avatarModify.zml" class="org.zhiqim.manager.action.AvatarAction" method="modify"/>
<action name="增加头像页面" interceptor="chkZmrLogin" path="/${zhiqim_manager}/avatarAdd.htm" view="/ztmpl/zhiqim_manager/template.htm" include="/zview/zhiqim_manager/avatarAdd.zml" />
<!-- 组织管理 -->
<action name="组织列表" interceptor="chkZmrLogin" path="/${zhiqim_manager}/org.htm" view="/ztmpl/zhiqim_manager/template.htm" include="/zview/zhiqim_manager/org.zml" class="org.zhiqim.manager.action.OrgAction" method="list"/>
<action name="增加组织页面" interceptor="chkZmrLogin" path="/${zhiqim_manager}/orgAdd.htm" view="/ztmpl/zhiqim_manager/template.htm" include="/zview/zhiqim_manager/orgAdd.zml" class="org.zhiqim.manager.action.OrgAction" method="add"/>
<action name="增加组织处理" interceptor="chkZmrLogin" path="/${zhiqim_manager}/orgInsert.htm" redirect="/${zhiqim_manager}/org.htm" class="org.zhiqim.manager.action.OrgAction" method="insert" success="增加成功"/>
<action name="修改组织页面" interceptor="chkZmrLogin" path="/${zhiqim_manager}/orgModify.htm" view="/ztmpl/zhiqim_manager/template.htm" include="/zview/zhiqim_manager/orgModify.zml" class="org.zhiqim.manager.action.OrgAction" method="modify"/>
<action name="修改组织处理" interceptor="chkZmrLogin" path="/${zhiqim_manager}/orgUpdate.htm" redirect="/${zhiqim_manager}/org.htm" class="org.zhiqim.manager.action.OrgAction" method="update" success="修改成功"/>
<action name="删除组织处理" interceptor="chkZmrLogin" path="/${zhiqim_manager}/orgDelete.htm" redirect="/${zhiqim_manager}/org.htm" class="org.zhiqim.manager.action.OrgAction" method="delete" success="删除成功"/>
<action name="组织关联权限" interceptor="chkZmrLogin" path="/${zhiqim_manager}/orgRule.htm" view="/ztmpl/zhiqim_manager/template.htm" include="/zview/zhiqim_manager/orgRule.zml" redirect="/${zhiqim_manager}/orgRule.htm" class="org.zhiqim.manager.action.OrgRuleAction"/>
<action name="组织选择对话框" interceptor="chkZmrLogin" path="/${zhiqim_manager}/orgSelector.htm" view="/ztmpl/zhiqim_manager/inner.htm" include="/zview/zhiqim_manager/orgSelector.zml" class="org.zhiqim.manager.action.OrgSelectorAction"/>
<!-- 部门管理 -->
<action name="部门列表" interceptor="chkZmrLogin" path="/${zhiqim_manager}/dept.htm" view="/ztmpl/zhiqim_manager/template.htm" include="/zview/zhiqim_manager/dept.zml" class="org.zhiqim.manager.action.DeptAction" method="list"/>
<action name="增加部门页面" interceptor="chkZmrLogin" path="/${zhiqim_manager}/deptAdd.htm" view="/ztmpl/zhiqim_manager/template.htm" include="/zview/zhiqim_manager/deptAdd.zml" class="org.zhiqim.manager.action.DeptAction" method="add"/>
<action name="增加部门处理" interceptor="chkZmrLogin" path="/${zhiqim_manager}/deptInsert.htm" redirect="/${zhiqim_manager}/dept.htm" class="org.zhiqim.manager.action.DeptAction" method="insert" success="增加成功"/>
<action name="修改部门页面" interceptor="chkZmrLogin" path="/${zhiqim_manager}/deptModify.htm" view="/ztmpl/zhiqim_manager/template.htm" include="/zview/zhiqim_manager/deptModify.zml" class="org.zhiqim.manager.action.DeptAction" method="modify"/>
<action name="修改部门处理" interceptor="chkZmrLogin" path="/${zhiqim_manager}/deptUpdate.htm" redirect="/${zhiqim_manager}/dept.htm" class="org.zhiqim.manager.action.DeptAction" method="update" success="修改成功"/>
<action name="删除部门处理" interceptor="chkZmrLogin" path="/${zhiqim_manager}/deptDelete.htm" redirect="/${zhiqim_manager}/dept.htm" class="org.zhiqim.manager.action.DeptAction" method="delete" success="删除成功"/>
<action name="部门操作员" interceptor="chkZmrLogin" path="/${zhiqim_manager}/deptOperator.htm" view="/ztmpl/zhiqim_manager/template.htm" include="/zview/zhiqim_manager/deptOperator.zml" class="org.zhiqim.manager.action.DeptOperatorAction"/>
<action name="部门增加操作员" interceptor="chkZmrLogin" path="/${zhiqim_manager}/deptOperatorSelector.htm" view="/ztmpl/zhiqim_manager/inner.htm" include="/zview/zhiqim_manager/deptOperatorSelector.zml" class="org.zhiqim.manager.action.DeptOperatorSelectorAction"/>
<action name="部门关联权限" interceptor="chkZmrLogin" path="/${zhiqim_manager}/deptRule.htm" view="/ztmpl/zhiqim_manager/template.htm" include="/zview/zhiqim_manager/deptRule.zml" redirect="/${zhiqim_manager}/deptRule.htm" class="org.zhiqim.manager.action.DeptRuleAction" success="保存成功"/>
<!-- 角色管理 -->
<action name="角色列表" interceptor="chkZmrLogin" path="/${zhiqim_manager}/role.htm" view="/ztmpl/zhiqim_manager/template.htm" include="/zview/zhiqim_manager/role.zml" class="org.zhiqim.manager.action.RoleAction" method="list"/>
<action name="增加角色页面" interceptor="chkZmrLogin" path="/${zhiqim_manager}/roleAdd.htm" view="/ztmpl/zhiqim_manager/template.htm" include="/zview/zhiqim_manager/roleAdd.zml" class="org.zhiqim.manager.action.RoleAction" method="add"/>
<action name="增加角色处理" interceptor="chkZmrLogin" path="/${zhiqim_manager}/roleInsert.htm" redirect="/${zhiqim_manager}/role.htm" class="org.zhiqim.manager.action.RoleAction" method="insert" success="增加成功"/>
<action name="修改角色页面" interceptor="chkZmrLogin" path="/${zhiqim_manager}/roleModify.htm" view="/ztmpl/zhiqim_manager/template.htm" include="/zview/zhiqim_manager/roleModify.zml" class="org.zhiqim.manager.action.RoleAction" method="modify"/>
<action name="修改角色处理" interceptor="chkZmrLogin" path="/${zhiqim_manager}/roleUpdate.htm" redirect="/${zhiqim_manager}/role.htm" class="org.zhiqim.manager.action.RoleAction" method="update" success="修改成功"/>
<action name="删除角色处理" interceptor="chkZmrLogin" path="/${zhiqim_manager}/roleDelete.htm" redirect="/${zhiqim_manager}/role.htm" class="org.zhiqim.manager.action.RoleAction" method="delete" success="删除成功"/>
<action name="角色操作员" interceptor="chkZmrLogin" path="/${zhiqim_manager}/roleOperator.htm" view="/ztmpl/zhiqim_manager/template.htm" include="/zview/zhiqim_manager/roleOperator.zml" class="org.zhiqim.manager.action.RoleOperatorAction"/>
<action name="角色增加操作员" interceptor="chkZmrLogin" path="/${zhiqim_manager}/roleOperatorSelector.htm" view="/ztmpl/zhiqim_manager/inner.htm" include="/zview/zhiqim_manager/roleOperatorSelector.zml" class="org.zhiqim.manager.action.RoleOperatorSelectorAction"/>
<action name="角色关联权限" interceptor="chkZmrLogin" path="/${zhiqim_manager}/roleRule.htm" view="/ztmpl/zhiqim_manager/template.htm" redirect="/${zhiqim_manager}/role.htm" include="/zview/zhiqim_manager/roleRule.zml" class="org.zhiqim.manager.action.RoleRuleAction" success="保存成功"/>
<!-- 操作员管理 -->
<action name="操作员列表" interceptor="chkZmrLogin" path="/${zhiqim_manager}/operator.htm" view="/ztmpl/zhiqim_manager/template.htm" include="/zview/zhiqim_manager/operator.zml" class="org.zhiqim.manager.action.OperatorAction" method="list"/>
<action name="增加操作员页面" interceptor="chkZmrLogin" path="/${zhiqim_manager}/operatorAdd.htm" view="/ztmpl/zhiqim_manager/template.htm" include="/zview/zhiqim_manager/operatorAdd.zml" class="org.zhiqim.manager.action.OperatorAction" method="add"/>
<action name="增加操作员反馈页面" interceptor="chkZmrLogin" path="/${zhiqim_manager}/operatorAddSuccess.htm" view="/ztmpl/zhiqim_manager/inner.htm" include="/zview/zhiqim_manager/operatorAddSuccess.zml" class=""/>
<action name="增加操作员处理" interceptor="chkZmrLogin" path="/${zhiqim_manager}/operatorInsert.htm" redirect="/${zhiqim_manager}/operator.htm" class="org.zhiqim.manager.action.OperatorAction" method="insert" success="增加成功"/>
<action name="修改操作员页面" interceptor="chkZmrLogin" path="/${zhiqim_manager}/operatorModify.htm" view="/ztmpl/zhiqim_manager/template.htm" include="/zview/zhiqim_manager/operatorModify.zml" class="org.zhiqim.manager.action.OperatorAction" method="modify"/>
<action name="修改操作员处理" interceptor="chkZmrLogin" path="/${zhiqim_manager}/operatorUpdate.htm" redirect="/${zhiqim_manager}/operator.htm" class="org.zhiqim.manager.action.OperatorAction" method="update" success="修改成功"/>
<action name="删除操作员处理" interceptor="chkZmrLogin" path="/${zhiqim_manager}/operatorDelete.htm" redirect="/${zhiqim_manager}/operator.htm" class="org.zhiqim.manager.action.OperatorAction" method="delete" success="删除成功"/>
<action name="操作员上传头像" interceptor="chkZmrLogin" path="/${zhiqim_manager}/operatorUploadAvatar.htm" view="/ztmpl/zhiqim_manager/template.htm" include="/zview/zhiqim_manager/operatorUploadAvatar.zml" />
<action name="操作员选择对话框" interceptor="chkZmrLogin" path="/${zhiqim_manager}/operatorSelector.htm" view="/ztmpl/zhiqim_manager/inner.htm" include="/zview/zhiqim_manager/operatorSelector.zml" class="org.zhiqim.manager.action.OperatorSelectorAction"/>
<action name="操作员多选对话框" interceptor="chkZmrLogin" path="/${zhiqim_manager}/operatorsSelector.htm" view="/ztmpl/zhiqim_manager/inner.htm" include="/zview/zhiqim_manager/operatorsSelector.zml" class="org.zhiqim.manager.action.OperatorSelectorAction"/>
<action name="操作员权限修改" interceptor="chkZmrLogin" path="/${zhiqim_manager}/operatorRule.htm" view="/ztmpl/zhiqim_manager/template.htm" include="/zview/zhiqim_manager/operatorRule.zml" redirect="/${zhiqim_manager}/operatorRule.htm" class="org.zhiqim.manager.action.OperatorRuleAction"/>
<action name="操作员权限显示" interceptor="chkZmrLogin" path="/${zhiqim_manager}/operatorRuleView.htm" view="/ztmpl/zhiqim_manager/template.htm" include="/zview/zhiqim_manager/operatorRuleView.zml" class="org.zhiqim.manager.action.OperatorRuleViewAction"/>
<action name="操作员部门选择框" interceptor="chkZmrLogin" path="/${zhiqim_manager}/operatorDeptSelector.htm" view="/ztmpl/zhiqim_manager/inner.htm" include="/zview/zhiqim_manager/operatorDeptSelector.zml" class="org.zhiqim.manager.action.OperatorDeptSelectorAction"/>
<action name="操作员角色选择框" interceptor="chkZmrLogin" path="/${zhiqim_manager}/operatorRoleSelector.htm" view="/ztmpl/zhiqim_manager/inner.htm" include="/zview/zhiqim_manager/operatorRoleSelector.zml" class="org.zhiqim.manager.action.OperatorRoleSelectorAction"/>
<!-- 个人中心 -->
<action name="更换头像" interceptor="chkZmrLogin" path="/${zhiqim_manager}/modifyAvatar.htm" view="/ztmpl/zhiqim_manager/inner.htm" include="/zview/zhiqim_manager/modifyAvatar.zml" />
<action name="修改密码" interceptor="chkZmrLogin" path="/${zhiqim_manager}/modifyPassword.htm" view="/ztmpl/zhiqim_manager/inner.htm" include="/zview/zhiqim_manager/modifyPassword.zml" />
<action name="修改手机号" interceptor="chkZmrLogin" path="/${zhiqim_manager}/modifyMobile.htm" view="/ztmpl/zhiqim_manager/inner.htm" include="/zview/zhiqim_manager/modifyMobile.zml" />
<action name="修改邮箱" interceptor="chkZmrLogin" path="/${zhiqim_manager}/modifyEmail.htm" view="/ztmpl/zhiqim_manager/inner.htm" include="/zview/zhiqim_manager/modifyEmail.zml" />
<action name="修改旺旺" interceptor="chkZmrLogin" path="/${zhiqim_manager}/modifyWangwang.htm" view="/ztmpl/zhiqim_manager/inner.htm" include="/zview/zhiqim_manager/modifyWangwang.zml" />
<action name="修改企业微信账号" interceptor="chkZmrLogin" path="/${zhiqim_manager}/modifyWkwechatAccount.htm" view="/ztmpl/zhiqim_manager/inner.htm" include="/zview/zhiqim_manager/modifyWkwechatAccount.zml" />
<action name="修改个人微信账号" interceptor="chkZmrLogin" path="/${zhiqim_manager}/modifyWxcode.htm" view="/ztmpl/zhiqim_manager/inner.htm" include="/zview/zhiqim_manager/modifyWxcode.zml" />
<action name="修改操作员参数" interceptor="chkZmrLogin" path="/${zhiqim_manager}/modifyOperatorParam.htm" view="/ztmpl/zhiqim_manager/inner.htm" include="/zview/zhiqim_manager/modifyOperatorParam.zml" />
<action name="验证密码" interceptor="chkZmrLogin" path="/${zhiqim_manager}/validatePassword.htm" view="/ztmpl/zhiqim_manager/inner.htm" include="/zview/zhiqim_manager/validatePassword.zml" />
<!-- 操作日志与在线列表 -->
<action name="操作日志查询" interceptor="chkZmrLogin" path="/${zhiqim_manager}/operateLog.htm" view="/ztmpl/zhiqim_manager/template.htm" include="/zview/zhiqim_manager/operateLog.zml" class="org.zhiqim.manager.action.OperateLogAction"/>
<action name="操作员在线列表" interceptor="chkZmrLogin" path="/${zhiqim_manager}/operatorOnline.htm" view="/ztmpl/zhiqim_manager/template.htm" include="/zview/zhiqim_manager/operatorOnline.zml" class="org.zhiqim.manager.action.OperatorOnlineAction"/>
<!-- 特定目录 -->
<action name="后台页面.htm" interceptor="chkZmrLogin" path="/zmr/*.htm" class="org.zhiqim.manager.action.ZmrAction"/>
<action name="后台页面.zml" interceptor="chkZmrLogin" path="/zmr/*.zml" class="org.zhiqim.manager.action.ZmrAction"/>
<action name="内部页面.htm" interceptor="chkZmrLogin" path="/zmi/*.htm" class="org.zhiqim.manager.action.ZmiAction"/>
<action name="内部页面.zml" interceptor="chkZmrLogin" path="/zmi/*.zml" class="org.zhiqim.manager.action.ZmiAction"/>
</zhiqim-context>
+149
View File
@@ -0,0 +1,149 @@
<#-------------------------------------------------------------------------->
<#-----知启蒙全局变量定义(统一使用zhiqim前缀)--------------------------------->
<#-------------------------------------------------------------------------->
<#var zhiqim.css = context.getRootPath("/service/res/zhiqim_v1.5.0.r2019010101.css")/>
<#var zhiqim.js = new ZmrCdnRuntime(context, "/service/res/zhiqim_v1.5.0.r2019010101.min.js")/>
<#var zhiqim.mobile.css= context.getRootPath("/service/res/zhiqim.mobile_v1.5.0.r2019010101.css")/>
<#var zhiqim.mobile.js= new ZmrCdnRuntime(context, "/service/res/zhiqim.mobile_v1.5.0.r2019010101.min.js")/>
<#var zhiqim_iframenav.js = new ZmrCdnRuntime(context, "/ztmpl/zhiqim_manager/zhiqim_iframenav_v1.5.0.r2019010101.js")/>
<#var jsencrypt.js = new ZmrCdnRuntime(context, "/ztmpl/zhiqim_manager/jsencrypt.js")/>
<#-------------------------------------------------------------------------->
<#-----知启蒙管理台变量定义(统一使用zmr前缀)---------------------------------->
<#-------------------------------------------------------------------------->
<#--分页显示默认条数-->
<#var zmr_page_size = 20/>
<#--脚注标注-->
<#var zmr_copyname = "2021&nbsp;秒绘科技"/>
<#var zmr_copyright = "Copyright&nbsp;&nbsp;&copy;&nbsp;"+zmr_copyname+"&nbsp;All&nbsp;Rights&nbsp;Reserved"/>
<#-------------------------------------------------------------------------->
<#-------知启蒙管理台函数定义(统一使用zhiqim_manager前缀)--------------------->
<#-------------------------------------------------------------------------->
<#--头部定义返回历史连接-->
<#function zhiqim_manager_history(url)>
<script>
function returnHistory()
{
window.location.href = "${url}";
}
</script>
</#function>
<#--主体内容-->
<#function zhiqim_manager_content()>
<div class="content">
</#function>
<#--主体内容结束-->
<#function zhiqim_manager_content_end()>
</div>
</#function>
<#--显示标题-->
<#function zhiqim_manager_title(name)>
<table class="z-table z-bordered zi-bd-b-none z-pd10">
<tr class="z-h40" style="background-color:${zmr_title_bgcolor}">
<td class="z-bold z-px15">${name}</td>
</tr>
</table>
</#function>
<#--显示无记录信息-->
<#function zhiqim_manager_no_record(colspan, desc)>
<tr class="zi-h60 zi-text-center z-bg-white">
<td colspan="${colspan}">${desc}</td>
</tr>
</#function>
<#--显示无记录信息-->
<#function zhiqim_manager_tr_no_record(result, colspan, desc)>
<#if result.isEmpty()>
<tr class="zi-h60 z-bg-white z-text-center">
<td colspan="${colspan}">${desc}</td>
</tr>
</#if>
</#function>
<#--显示tr标题-->
<#function zhiqim_manager_tr_title(colspan, name)>
<tr class="zi-h40">
<td class="z-bold z-px15 zi-pd-l5 z-text-left" colspan="${colspan}">${name}</td>
</tr>
</#function>
<#--判断列表背景分隔颜色-->
<#function zhiqim_manager_tr_bg(index)>
<#if index % 2 == 0>${zmr_tr_odd_bgcolor}<#else>${zmr_tr_even_bgcolor}</#if>
</#function>
<#--列表行移入移出颜色变化-->
<#function zhiqim_manager_tr_onmouse()>
onmouseover="Z(this).css('background-color', '${zmr_tr_over_bgcolor}')" onmouseout="Z(this).css('background-color', '${zmr_tr_even_bgcolor}')"
</#function>
<#--列表行点击选中单选按钮-->
<#function zhiqim_manager_tr_click_radio()>
onclick="Z(this).find('td:first-child > zcover > i.z-radio').click();"
</#function>
<#--列表行点击选中多选按钮-->
<#function zhiqim_manager_tr_click_checkbox()>
onclick="Z(this).find('td:first-child > zcover > i.z-checkbox').click();"
</#function>
<#--显示记录脚注-->
<#function zhiqim_manager_list(size)>
<table class="z-table z-bordered zi-bd-t-none z-bg-white">
<tr class="z-h40">
<td class="zi-pd-r10 z-text-right">共&nbsp;<span class="z-color-red">${size}</span>&nbsp;条数据</td>
</tr>
</table>
</#function>
<#--显示返回上一页-->
<#function zhiqim_manager_return()>
<table class="z-table z-bordered zi-bd-t-none z-pd10 z-bg-white">
<tr class="z-h60">
<td><a href="javascript:returnHistory();">返回上一页</a></td>
</tr>
</table>
</#function>
<#--显示返回上一页和提交-->
<#function zhiqim_manager_submit()>
<table class="z-table zi-bd zi-bd-t-none z-pd10 z-bg-white">
<tr class="z-h80">
<td width="40%"><a href="javascript:returnHistory();">返回上一页</a></td>
<td width="*"><button type="submit" class="z-button z-large z-w150 ${zmr_color_class}">提交</button></td>
</tr>
</table>
</#function>
<#--显示返回上一页和提交带参数-->
<#function zhiqim_manager_submit_onclick(onclick)>
<table class="z-table zi-bd zi-bd-t-none z-pd10 z-bg-white">
<tr class="z-h80">
<td width="40%"><a href="javascript:returnHistory();">返回上一页</a></td>
<td width="*"><button type="button" class="z-button z-large z-w150 ${zmr_color_class}" onclick="${onclick}">提交</button></td>
</tr>
</table>
</#function>
<#-------------------------------------------------------------------------->
<#-------知启蒙管理台预定义函数定义------------------------------------------->
<#-------------------------------------------------------------------------->
<#--topnav左边区域自定义块-->
<#function zhiqim_manager_topnav_left_defined()>
</#function>
<#--topnav右边区域自定义块-->
<#function zhiqim_manager_topnav_right_defined()>
</#function>
+58
View File
@@ -0,0 +1,58 @@
-- ---------------------------------------------------
-- 知启蒙管理台功能菜单
-- ---------------------------------------------------
truncate table ZMR_MENU;
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('ROOT', 'MENU', '系统功能根菜单', '', 0, 0, 0, '', '', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU', 'MENU_010', '系统配置', '系统', 1, 0, 1, 'z-config', '', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010', 'MENU_010_010', '系统基础设置', '', 2, 0, 1, 'z-setting', '/${zhiqim_manager}/menu.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010_010', 'MENU_010_010_010', '增加系统菜单', '', 3, 0, 2, '', '/${zhiqim_manager}/menuAdd.htm,/${zhiqim_manager}/menuInsert.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010_010', 'MENU_010_010_020', '修改系统菜单', '', 3, 0, 2, '', '/${zhiqim_manager}/menuModify.htm,/${zhiqim_manager}/menuUpdate.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010_010', 'MENU_010_010_030', '删除系统菜单', '', 3, 0, 2, '', '/${zhiqim_manager}/menuDelete.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010_010', 'MENU_010_010_100', '系统头像管理', '', 3, 0, 2, '', '/${zhiqim_manager}/avatar.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010_010', 'MENU_010_010_110', '增加系统头像', '', 3, 0, 2, '', '/${zhiqim_manager}/avatarAdd.htm,/${zhiqim_manager}/avatarInsert.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010_010', 'MENU_010_010_120', '修改系统头像', '', 3, 0, 2, '', '/${zhiqim_manager}/avatarModify.htm,/${zhiqim_manager}/avatarUpdate.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010_010', 'MENU_010_010_130', '删除系统头像', '', 3, 0, 2, '', '/${zhiqim_manager}/avatarDelete.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010_010', 'MENU_010_010_200', '系统配置管理', '', 3, 0, 2, '', '/${zhiqim_manager}/config.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010_010', 'MENU_010_010_210', '系统缓存管理', '', 3, 0, 2, '', '/${zhiqim_manager}/cache.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010_010', 'MENU_010_010_300', '系统参数设置', '', 3, 0, 2, '', '/${zhiqim_manager}/param.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010_010', 'MENU_010_010_305', '操作员参数管理', '', 3, 0, 2, '', '/${zhiqim_manager}/paramOperator.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010_010', 'MENU_010_010_310', '首页主题设置', '', 3, 0, 2, '', '/${zhiqim_manager}/themeIndex.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010_010', 'MENU_010_010_320', '主页主题设置', '', 3, 0, 2, '', '/${zhiqim_manager}/themeMain.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010_010', 'MENU_010_010_330', '公钥私钥设置', '', 3, 0, 2, '', '/${zhiqim_manager}/keys.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010_010', 'MENU_010_010_340', '系统进程管理', '', 3, 0, 2, '', '/${zhiqim_manager}/process.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010', 'MENU_010_050', '组织部门管理', '', 2, 0, 1, 'z-apps', '/${zhiqim_manager}/dept.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010_050', 'MENU_010_050_010', '组织管理', '', 3, 0, 2, '', '/${zhiqim_manager}/org.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010_050', 'MENU_010_050_020', '增加组织', '', 3, 0, 2, '', '/${zhiqim_manager}/orgAdd.htm,/zhiqim_manager/orgInsert.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010_050', 'MENU_010_050_030', '修改组织', '', 3, 0, 2, '', '/${zhiqim_manager}/orgModify.htm,/zhiqim_manager/orgUpdate.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010_050', 'MENU_010_050_040', '删除组织', '', 3, 0, 2, '', '/${zhiqim_manager}/orgDelete.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010_050', 'MENU_010_050_050', '组织权限', '', 3, 0, 2, '', '/${zhiqim_manager}/orgRule.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010_050', 'MENU_010_050_100', '部门管理', '', 3, 0, 2, '', '/${zhiqim_manager}/dept.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010_050', 'MENU_010_050_110', '增加部门', '', 3, 0, 2, '', '/${zhiqim_manager}/deptAdd.htm,/${zhiqim_manager}/deptInsert.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010_050', 'MENU_010_050_120', '修改部门', '', 3, 0, 2, '', '/${zhiqim_manager}/deptModify.htm,/${zhiqim_manager}/deptUpdate.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010_050', 'MENU_010_050_130', '删除部门', '', 3, 0, 2, '', '/${zhiqim_manager}/deptDelete.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010_050', 'MENU_010_050_140', '部门成员', '', 3, 0, 2, '', '/${zhiqim_manager}/deptOperator.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010_050', 'MENU_010_050_150', '部门权限', '', 3, 0, 2, '', '/${zhiqim_manager}/deptRule.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010', 'MENU_010_110', '操作员管理', '', 2, 0, 1, 'z-customer', '/${zhiqim_manager}/operator.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010_110', 'MENU_010_110_010', '增加操作员', '', 3, 0, 2, '', '/${zhiqim_manager}/operatorAdd.htm,/${zhiqim_manager}/operatorInsert.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010_110', 'MENU_010_110_020', '修改操作员', '', 3, 0, 2, '', '/${zhiqim_manager}/operatorModify.htm,/${zhiqim_manager}/operatorUpdate.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010_110', 'MENU_010_110_030', '删除操作员', '', 3, 0, 2, '', '/${zhiqim_manager}/operatorDelete.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010_110', 'MENU_010_110_040', '查看操作员权限', '', 3, 0, 2, '', '/${zhiqim_manager}/operatorRuleView.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010_110', 'MENU_010_110_050', '设置操作员独立权限 ', '', 3, 0, 2, '', '/${zhiqim_manager}/operatorRule.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010_110', 'MENU_010_110_060', '设置操作员部门', '', 3, 0, 2, '', '/${zhiqim_manager}/operatorDept.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010_110', 'MENU_010_110_070', '设置操作员角色', '', 3, 0, 2, '', '/${zhiqim_manager}/operatorRole.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010_110', 'MENU_010_110_080', '操作员参数管理', '', 3, 0, 2, '', '/${zhiqim_manager}/operatorParam.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010_110', 'MENU_010_110_090', '角色管理', '', 3, 0, 2, '', '/${zhiqim_manager}/role.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010_110', 'MENU_010_110_100', '增加角色', '', 3, 0, 2, '', '/${zhiqim_manager}/roleAdd.htm,/${zhiqim_manager}/roleInsert.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010_110', 'MENU_010_110_110', '修改角色', '', 3, 0, 2, '', '/${zhiqim_manager}/roleModify.htm,/${zhiqim_manager}/roleUpdate.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010_110', 'MENU_010_110_120', '删除角色', '', 3, 0, 2, '', '/${zhiqim_manager}/roleDelete.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010_110', 'MENU_010_110_130', '角色成员', '', 3, 0, 2, '', '/${zhiqim_manager}/roleOperator.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010_110', 'MENU_010_110_140', '角色权限', '', 3, 0, 2, '', '/${zhiqim_manager}/roleRule.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010', 'MENU_010_150', '操作日志查询', '', 2, 0, 1, 'z-text', '/${zhiqim_manager}/operateLog.htm', '');
insert into ZMR_MENU (PARENT_CODE, MENU_CODE, MENU_NAME, MENU_NAME_ABBR, MENU_LEVEL, MENU_STATUS, MENU_TYPE, MENU_ICON, MENU_URL, MENU_DESC) values ('MENU_010_150', 'MENU_010_150_100', '操作员在线列表', '', 3, 0, 2, '', '/${zhiqim_manager}/operatorOnline.htm', '');
commit;
-- ---------------------------------------------------
-- 知启蒙管理台功能菜单创建完成
-- ---------------------------------------------------
@@ -0,0 +1,138 @@
<!DOCTYPE html>
<html>
<head>
<title>${context.getContextName()}</title>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
${Styles.src(zhiqim.css)}
${Scripts.src(zhiqim.js)}
${Styles.src(zmr_theme.css)}
${Scripts.src(zmr_theme.js)}
</head>
<body>
${Htmls.toCallFrame()}
<!--顶部导航 -->
<div class="topnav">
<div id="logo" class="logo z-pointer z-text-left ${sessionUser.getSidebarClass()}" onclick="Z.L.href('${context.getRootPath("/"+zhiqim_manager+"/main.htm")}');">${context.getAttribute("name")}</div>
<div class="topnavleft">
<div class="bar z-w60 z-text-center z-pointer" onclick="Zmr.sidebar();"><i class="z-font z-list z-px22"></i></div>
${zhiqim_manager_topnav_left_defined()}
</div>
<div class="topnavright">
${zhiqim_manager_topnav_right_defined()}
<#if ZmrOrgDao.getOrgList(request, sessionUser.getOperatorCode()).size() gt 1>
<div class="nav z-text-center z-pointer z-pd-l20 z-pd-r20" style="max-width:200px;" onclick="Zmr.selectOrgDialog();">${ZmrOrgDao.getOrgName(request, sessionUser.getSelectedOrgId())}</div>
</#if>
<div class="nav z-w100 z-text-center z-pointer" onclick="Z.L.reload();">刷新</div>
<div class="nav z-w100 z-text-center z-pointer" onclick="Z.L.confirm('${context.getRootPath("/"+zhiqim_manager+"/logout.htm")}', '确实要退出吗?');">退出系统</div>
</div>
</div>
<!--容器开始 -->
<div id="container" class="container">
<!--边导航 -->
<div id="sidebar" class="sidebar ${sessionUser.getSidebarClass()}">
<!--个人中心-->
<div class="z-h80 z-pd-t15 z-pd-l15" style="border-bottom:1px solid #22282e;">
<div class="z-float-left z-w50 z-h50 z-mg-r10"><img class="z-bd-rd50p z-w50 z-h50" src="${sessionUser.getAvatar50()}"></div>
<div class="z-float-left z-lh25 ">
<span class="z-px14 z-bold z-color-white">${sessionUser.getOperatorName()}</span><br>
<a href="${context.getRootPath("/"+zhiqim_manager+"/profile.htm")}"><span class="z-color-white z-px12">个人中心</span></a>
</div>
</div>
<!--栏目列表-->
<#var topMenuCode = sessionUser.getSelectedTopMenuCodeOrFirstMenuCode(request, designatedPath)/>
<#var childMenuCode = sessionUser.getSelectedSecondMenuCode(request, designatedPath)/>
<#for topMenu : sessionUser.getTopMenuList()>
<#if sessionUser.hasChildMenu(topMenu.getMenuCode())>
<p><i class="z-font z-px18 z-mg-r5 ${topMenu.getMenuIcon()}"></i>#{topMenu.getMenuName()}<i class="z-arrow z-px5 z-gray"></i></p>
<ul id="${topMenu.getMenuCode()}" style="display: <#if topMenu.getMenuCode() == topMenuCode>block<#else>none</#if>;">
<#for childMenu : sessionUser.getChildMenuList(topMenu.getMenuCode())>
<li onclick="Z.L.href('${context.getRootPath(childMenu.getMenuUrl())}');" <#if childMenu.getMenuCode() == childMenuCode>class="active"</#if>><i class="z-font z-mg-r10 ${childMenu.getMenuIcon()}"></i>#{childMenu.getMenuName()}</li>
</#for>
</ul>
<#elseif Validates.isNotEmptyBlank(topMenu.getMenuUrl())>
<p onclick="Z.L.href('${context.getRootPath(topMenu.getMenuUrl())}');"><i class="z-font z-px18 z-mg-r5 ${topMenu.getMenuIcon()}"></i>#{topMenu.getMenuName()}</p>
</#if>
</#for>
</div>
<!--主体-->
<div id="mainbody" class="mainbody" style="margin-left:<#if sessionUser.hasSidebar()>200px<#else>0</#if>">
<#include include/>
</div>
<!-- 容器结束 -->
</div>
<!--脚注-->
<div class="footer">
<div class="footer-wrap">${zmr_copyright}</div>
</div>
<#if Validates.isNotEmptyBlank(sessionUser.getOperator().getInitialPassword()) && sessionUser.getOperator().getInitialPassword().equals(sessionUser.getOperator().getOperatorPass())>
<script>
function doModifyPass(form)
{
var ajax = new Z.Ajax();
ajax.setContextPath("${context.getContextPath()}");
ajax.setClassName("ZmrProfilePresenter");
ajax.setMethodName("doModifyPass");
ajax.setParamForm(form);
ajax.setFailureAlert();
ajax.setSuccessAlertReloadParent("修改成功");
ajax.execute();
}
var dialog = new Z.Dialog();
dialog.title = '<span style="font-weight:bold">初始密码需要修改</span>';
dialog.text = '<div id="dialog_content"></div>';
dialog.width = 650;
dialog.height = 280;
dialog.fixed = true;
dialog.close = function ()
{//关闭
dialog.remove();
dialog = null;
}
dialog.execute();
dialog.$background.remove();//去边框
var text = `
<form>
<input type="text" class="z-hidden-fixed">
<input type="password" class="z-hidden-fixed">
<table class="z-table z-mg-t10 z-mg-b10">
<tr class="z-h60">
<td width="80" class="zi-pd-l10">旧&ensp;密&ensp;码:</td>
<td width="303"><input name="oldPassword" type="password" class="z-input z-w300 ${zmr_color_class}" maxlength="16" autocomplete="off"></td>
<td width="10" class="z-px14 z-text-red zi-pd-t6">*</td>
<td width="*" class="zi-pd-r10 z-px14 z-color-999">请输入原始密码</td>
</tr>
<tr class="z-h60">
<td class="zi-pd-l10">新&ensp;密&ensp;码:</td>
<td><input name="newPassword" type="password" class="z-input z-w300 ${zmr_color_class}" maxlength="16" autocomplete="off"></td>
<td class="z-px14 z-text-red zi-pd-t6">*</td>
<td class="zi-pd-r10 z-px12 z-color-999">6-16位密码,大写字母、小写字母、数字和特殊字符必须四选三,特殊字符支持</span><span class="z-px12 z-color-999 z-samp">.\`_~!@#$%</span></td>
</tr>
<tr class="z-h60">
<td class="zi-pd-l10">确认密码:</td>
<td><input name="newPassword2" type="password" class="z-input z-w300 ${zmr_color_class}" maxlength="16" autocomplete="off"></td>
<td class="z-px14 z-text-red zi-pd-t6">*</td>
<td class="zi-pd-r10 z-px14 z-color-999">再次输入新密码</td>
</tr>
</table>
<div class="z-absolute z-b0 z-l0 z-w100p z-h80 z-pd20 z-text-center z-bg-gray">
<button type="button" class="z-button z-large z-w100 ${zmr_color_class}" onclick="doModifyPass(this.form);">提交</button>
</div>
</form>
`;
Z("#dialog_content").htmlc(text);
dialog.innerAlert = false;
dialog.submit = function(){
}
document.getElementsByClassName("z-font z-error")[0].remove();
</script>
</#if>
</body>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

@@ -0,0 +1,95 @@
@charset "utf-8";
/* ZhiqimUI */
.z-input{color:#333;}
/* global */
body{color:#333;background-color:#fff;}
body,table,td,div{font-size:14px;line-height:120%;}
a,a:visited{color:#333;text-decoration:none;cursor:pointer;}
a:active,a:hover{color:#4bb0af;text-decoration:none;}
a.blue,a.blue:visited{color:#0066cc;text-decoration:none;cursor:pointer;}
a.blue:active,a.blue:hover{color:#0066cc;text-decoration:underline;}
/* topnav */
.topnav {position:relative;width:100%;min-width:680px;color:#fff;background-color:#00a2eb;height:55px;z-index:99;}
.topnav .logo {float:left;width:200px;height:55px;padding:0 10px;overflow:hidden;font-size:24px;line-height:55px;background-color:#008bd2;word-break:break-all;word-wrap:break-word;}
.topnav a{color: #fff;}
.topnav .topnavleft {float:left;height:55px;}
.topnav .topnavleft .bar {float:left;height:55px;line-height:55px;}
.topnav .topnavleft .first {border-left:1px solid #008bd2;}
.topnav .topnavleft .nav, .topnav .topnavleft .nav-only {float:left;height:55px;line-height:55px;border-right:1px solid #008bd2;}
.topnav .topnavleft .nav:hover{background-color:#008bd2; color:#fff;}
.topnav .topnavright {float:right;height:55px;}
.topnav .topnavright .nav, .topnav .topnavright .nav-only {float:left;height:55px;line-height:55px;border-left:1px solid #008bd2;}
.topnav .topnavright .nav:hover {background-color:#008bd2; color:#fff;}
/* container */
.container {position:relative;width:100%;height:100%;min-height:1000px;overflow:hidden;background-color:#eaedf1;}
/*[替换z-tabnav的背景色为容器背景色]*/
.container .z-tabnav>nav li.z-active{border-bottom:1px solid #eaedf1;}
.container .z-tabnav>nav li.z-active:hover{background-color:#eaedf1;}
.sidebar {position:relative;float:left;width:200px;min-height:1000px;overflow:hidden;background-color:#2c3a40;margin-bottom:-9999px;padding-bottom:9999px;}
.sidebar p{position:relative;float:left;width:200px; height:40px;line-height:40px;color:#fff; padding-left:15px; background-color:#273237;cursor:pointer;border-bottom:1px solid #22282e;}
.sidebar p a{color:#fff;}
.sidebar p .z-arrow{position:absolute;top:16px;right:10px;}
.sidebar p:hover{background-color:#22282e;}
.sidebar p.active{background-color:#37424f;}
.sidebar ul{position:relative;width:200px;height:auto;overflow:hidden;}
.sidebar ul li{float:left;background-color:#37424f;width:200px;height:40px;color:#fff; line-height:40px;padding-left:15px;cursor:pointer;}
.sidebar ul li a{color:#fff;}
.sidebar ul li:hover{background-color:#414750;color:#fff;}
.sidebar ul li.active{background-color:#5c5c5c;color:#fff;}
/* iframenav */
.iframenav{position:relative;margin-left:200px;height:40px;line-height:40px;}
/* [iframenav翻页] */
.iframenav-prev,.iframenav-next{position:absolute;top:0;width:50px;height:39px;z-index:1;background:#fff;cursor:pointer;padding:0 22px;text-align:center;line-height:39px;}
.iframenav-prev:hover,.iframenav-next:hover{background-color:#f5f5f5;}
.iframenav-prev{left:0;border-right:1px solid #d3d3d3;}
.iframenav-next{right:100px;border-left:1px solid #d3d3d3;}
.iframenav-prev .z-font,.iframenav-next .z-font{color:#999;margin-left:-8px;}
/* [iframenav控制] */
.iframenav-ctrl{position:absolute;top:0;right:0;}
.iframenav-ctrl-title{position:absolute;top:0;right:0;width:100px;height:39px;z-index:1;border-left:1px solid #d3d3d3;text-align:center;line-height:39px;color:#666;background:#fff;cursor:pointer;}
.iframenav-ctrl-title:hover{background-color:#f5f5f5;}
.iframenav-ctrl-title .z-font{color:#999;margin-left:6px;font-size:10px;}
.iframenav-ctrl-wrap{position:absolute;top:39px;right:0;display:none;width:150px;height:130px;z-index:2;background-color:#fff;border:1px solid #d3d3d3;}
.iframenav-ctrl-wrap ul{padding:10px 0;}
.iframenav-ctrl-wrap ul+ul{border-top:1px solid #ccc;}
.iframenav-ctrl-wrap li{padding:0 25px;line-height:30px;cursor:pointer;}
.iframenav-ctrl-wrap li:hover{background:#f1f1f1;}
/* [iframenav选项卡] */
.iframenav-tab-wrap{height:39px;margin:0 150px 0 50px;overflow:hidden;position:relative;}
.iframenav-tab-list{position:absolute;left:0;top:0;height:39px;background-color:#fff;overflow:hidden;}
.iframenav-tab-item{position:relative;float:left;line-height:39px;border-right:1px solid #d3d3d3;padding:0 35px 0 20px;background:#fff;color:#666;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}
.iframenav-tab-item.active{background-color:#d4d8db;}
.iframenav-tab-item:hover{color:#222;}
.iframenav-tab-item:first-child{padding-right:23px;}
.iframenav-tab-item .z-font{position:absolute;top:2px;width:25px;line-height:39px;color:#666;font-size:12px;cursor:pointer;text-align:center;}
.iframenav-tab-item .z-error{right:0;padding-right:5px;}
.iframenav-tab-item .z-error:hover{color:#f00;}
/* [iframenav内容页] */
.iframenav-cont{}
.iframenav-cont-item{width:100%;height:100%;display:none;}
.iframenav-cont-item.active{display:block;}
.iframenav-cont-item > iframe{width:100%;height:100%;border:0;margin:0;padding:0;}
/* mainbody */
.mainbody{margin-left:200px;}
.mainbody .breadcrumb{position:relative;float:left;width:100%;}
.mainbody .content{position:relative;float:left;width:100%;padding:20px;}
/* footer */
.footer {position:relative;width:100%;height:60px;display:block;overflow:hidden;background-color:#f4f4f4;border-top:1px solid #d3d3d3;z-index:99;}
.footer-wrap {position:relative;margin:0 auto;height:100%;line-height:60px;text-align: center;color:#333;}
@@ -0,0 +1,115 @@
/*
* 版权所有 (C) 2015 知启蒙(ZHIQIM) 保留所有权利。
*
* 指定登记&发行网站: https://www.zhiqim.com/ 欢迎加盟知启蒙,[编程有你,知启蒙一路随行]。
*
* 本文采用《知启蒙许可证》,除非符合许可证,否则不可使该文件!
* 1、您可以免费使用、修改、合并、出版发行和分发,再授权软件、软件副本及衍生软件;
* 2、您用于商业用途时,必须在原作者指定的登记网站进行实名登记;
* 3、您在使用、修改、合并、出版发行和分发时,必须包含版权声明、许可声明,及保留原作者的著作权、商标和专利等知识产权;
* 4、您在互联网、移动互联网等大众网络下发行和分发再授权软件、软件副本及衍生软件时,必须在原作者指定的发行网站进行发行和分发;
* 5、您可以在以下链接获取一个完整的许可证副本。
*
* 许可证链接:http://zhiqim.org/licenses/LICENSE.htm
*
* 除非法律需要或书面同意,软件由原始码方式提供,无任何明示或暗示的保证和条件。详见完整许可证的权限和限制。
*/
+(function(Z)
{//BEGIN
/**************************************************/
//定义全局的对象,便于所有的页面调用
/**************************************************/
var Zmr = window.Zmr = {};
Zmr.selectOrgDialog = function()
{//弹出组织选择框
var dialog = new Z.Dialog();
dialog.title = "选择组织";
dialog.url = "orgSelector.htm";
dialog.width = 392;
dialog.height = 423;
dialog.fixed = true;
dialog.scroll = true;
dialog.execute();
};
Zmr.sidebar = function()
{//打开&关闭边导航
var $sidebar = Z("#sidebar");
if ($sidebar.isHide())
{
$sidebar.show();
Z("#logo").show();
Z("#iframenav").css("margin-left", 200);
Z("#mainbody").css("margin-left", 200);
}
else
{
$sidebar.hide();
Z("#logo").hide();
Z("#iframenav").css("margin-left", 0);
Z("#mainbody").css("margin-left", 0);
}
Z.ajax().setContextPath(Zmr.contextPath)
.setClassName("sessionUser").setMethodName("setSidebar").addParam(!$sidebar.isHide())
.execute();
};
Zmr.calcMainbodyHeight = function()
{//计算主体高度
var height = Z(document).clientHeight()-55;//55为topnav的高度
Z("#container").css("height", height);
Z("#mainbody").css("height", height-40);//40为iframenav高度
};
Zmr.treeExpand = function(code)
{//树菜单展开和关闭
var $menu = Z("#menu-"+code);
var $ico = Z("#ico-"+code);
if (!$menu.isHide())
{
$menu.hide();
if ($ico.hasClass("z-mlastnode"))
$ico.removeClass("z-mlastnode").addClass("z-plastnode");
else
$ico.removeClass("z-mnode").addClass("z-pnode");
}
else
{
$menu.show();
if ($ico.hasClass("z-plastnode"))
$ico.removeClass("z-plastnode").addClass("z-mlastnode");
else
$ico.removeClass("z-pnode").addClass("z-mnode");
}
};
Zmr.addTopMenuClick = function()
{//增加顶级栏目点击事件,先定义两个开关,防止并发时导致数据混乱
Zmr.doClickTopMenuUp = false;
Zmr.doClickTopMenuDw = false;
Z(".sidebar p").click(function()
{
if (Zmr.doClickTopMenuUp || Zmr.doClickTopMenuDw)
return;
Zmr.doClickTopMenuUp = true;Zmr.doClickTopMenuDw = true;
Z(this).next("ul").slideToggle(200, function(){Zmr.doClickTopMenuDw = false;})
.siblings("ul").slideUp(200, function(){Zmr.doClickTopMenuUp = false;});
});
};
/**************************************************/
//定义初始化滑动菜单
/**************************************************/
Z.onload(function()
{//菜单隐藏展开
Zmr.addTopMenuClick();
});
//END
})(zhiqim);
@@ -0,0 +1,61 @@
<#--变量定义-->
<#var zmr_theme.css = context.getRootPath("/ztmpl/zhiqim_manager/"+themeMain+"/default_2019010101.css")/>
<#var zmr_theme.js = context.getRootPath("/ztmpl/zhiqim_manager/"+themeMain+"/default_2019010101.js")/>
<#var zmr_color_class = "z-blue"/>
<#var zmr_sidebar_width = 200/>
<#var zmr_topnav_height = 55/>
<#var zmr_breadcrumb_height = 40/>
<#var zmr_title_bgcolor = "#efefef"/>
<#var zmr_thead_bgcolor = "#efefef"/>
<#var zmr_tr_odd_bgcolor = "#f3fdfc"/>
<#var zmr_tr_even_bgcolor = "#ffffff"/>
<#var zmr_tr_over_bgcolor = "#f3fdfc"/>
<#var zmr_tfoot_bgcolor = "#ffffff"/>
<#--面包屑 -->
<#function zhiqim_manager_breadcrumb_name(name)>
<#if !ZmrParamDao.isThemeFrame(context)>
<div class="breadcrumb z-h40 z-lh40 z-bg-white z-bd-b">
<span class="z-pd-l20">${name}</span>
</div>
</#if>
</#function>
<#--面包屑一级栏目 -->
<#function zhiqim_manager_breadcrumb(name)>
<#if !ZmrParamDao.isThemeFrame(context)>
<div class="breadcrumb z-h40 z-lh40 z-bg-white z-bd-b">
<span class="z-pd-l20">当前位置:<a href="${context.getRootPath(ZmlContexts.parseZmlContent(request, ZmrParamDao.getMainIndexUrl(context)))}">首页</a>&nbsp;&nbsp;&nbsp;>>&nbsp;&nbsp;&nbsp;<span style="color:#078ce9;">${name}</span></span>
</div>
</#if>
</#function>
<#--面包屑二级栏目 -->
<#function zhiqim_manager_breadcrumb_parent(parentUrl, parentName, name)>
<#if !ZmrParamDao.isThemeFrame(context)>
<div class="breadcrumb z-h40 z-lh40 z-bg-white z-bd-b">
<span class="z-pd-l20">当前位置:<a href="${context.getRootPath(ZmlContexts.parseZmlContent(request, ZmrParamDao.getMainIndexUrl(context)))}">首页</a>&nbsp;&nbsp;&nbsp;>>&nbsp;&nbsp;&nbsp;<a href="${parentUrl}">${parentName}</a>&nbsp;&nbsp;&nbsp;>>&nbsp;&nbsp;&nbsp;<span style="color:#078ce9;">${name}</span></span>
</div>
</#if>
</#function>
<#--面包屑三级栏目 -->
<#function zhiqim_manager_breadcrumb_parent_last(parentUrl, parentName, lastUrl, lastName, name)>
<#if !ZmrParamDao.isThemeFrame(context)>
<div class="breadcrumb z-h40 z-lh40 z-bg-white z-bd-b">
<span class="z-pd-l20">当前位置:<a href="${context.getRootPath(ZmlContexts.parseZmlContent(request, ZmrParamDao.getMainIndexUrl(context)))}">首页</a>&nbsp;&nbsp;&nbsp;>>&nbsp;&nbsp;&nbsp;<a href="${parentUrl}">${parentName}</a>&nbsp;&nbsp;&nbsp;>>&nbsp;&nbsp;&nbsp;<a href="${lastUrl}">${lastName}</a>&nbsp;&nbsp;&nbsp;>>&nbsp;&nbsp;&nbsp;<span style="color:#078ce9;">${name}</span></span>
</div>
</#if>
</#function>
<#--显示记录分页-->
<#function zhiqim_manager_paging(result, link)>
<table class="z-table z-bordered zi-bd-t-none z-bg-white">
<tr class="z-h50">
<td><div class="z-float-right z-mg-r10">${PagingStd.toHtmlLink(result, link)}</div></td>
</tr>
</table>
</#function>
<#--显示记录分页JS-->
<#function zhiqim_manager_paging_jsMethod(result, jsMethod)>
<table class="z-table z-bordered zi-bd-t-none z-bg-white">
<tr class="z-h50">
<td><div class="z-float-right z-mg-r10">${PagingStd.toHtmlClick(result, jsMethod)}</div></td>
</tr>
</table>
</#function>
@@ -0,0 +1,35 @@
<#var zmr_sidebar_width = 0/>
<#var zmr_topnav_height = 0/>
<!DOCTYPE html>
<html>
<head>
<title>${context.getContextName()}</title>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
${Styles.src(zhiqim.css)}
${Scripts.src(zhiqim.js)}
${Styles.src(zmr_theme.css)}
${Scripts.src(zmr_theme.js)}
<#if request.getPathInContext() == "/"+zhiqim_manager+"/param.htm" || request.getPathInContext() == "/"+zhiqim_manager+"/themeMain.htm">
<script>
if (top.location == self.location)
{//从其他主题切换过来的时候
top.location.href = "${context.getRootPath("/"+zhiqim_manager+"/main.htm")}";
}
</script>
</#if>
</head>
<body>
${Htmls.toCallFrame()}
<div class="container">
<div class="mainbody" style="margin-left:0;">
<!-- 主体开始 -->
<#include include/>
<!-- 主体结束 -->
</div>
</div>
</body>
</html>
@@ -0,0 +1,175 @@
<!DOCTYPE html>
<html>
<head>
<title>${context.getContextName()}</title>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
${Styles.src(zhiqim.css)}
${Scripts.src(zhiqim.js)}
${Styles.src(zmr_theme.css)}
${Scripts.src(zmr_theme.js)}
${Scripts.src(zhiqim_iframenav.js)}
${Styles.htmlOverflowHidden()}
<script>
Zmr.contextPath = "${context.getContextPath()}";
Zin.contextPath = "${context.getContextPath()}";
Z.onload(Zmr.calcMainbodyHeight);
Z(window).resize(Zmr.calcMainbodyHeight);
Z(window).resize(Zin.setTranslateForShowActive);
<#if !sessionUser.isWelcomeUrl()>
Z.onload(function()
{
var $elem = Z("#sidebar [data-url]");
if ($elem.length > 0)
{//存在指定主页,主动打开
Zin.doClickChildMenu($elem[0], $elem.attr("data-url"));
}
});
</#if>
</script>
</head>
<body>
<!--顶部导航 -->
<div class="topnav">
<div id="logo" class="logo z-pointer z-text-left ${sessionUser.getSidebarClass()}" onclick="Zin.selectIframeTab('menu_index');">${context.getAttribute("name")}</div>
<div class="topnavleft">
<div class="bar z-w60 z-text-center z-pointer" onclick="Zmr.sidebar();"><i class="z-font z-list z-px22"></i></div>
${zhiqim_manager_topnav_left_defined()}
</div>
<div class="topnavright">
${zhiqim_manager_topnav_right_defined()}
<#if ZmrOrgDao.getOrgList(request, sessionUser.getOperatorCode()).size() gt 1>
<div class="nav z-text-center z-pointer z-pd-l20 z-pd-r20" style="max-width:200px;" onclick="Zmr.selectOrgDialog();">${ZmrOrgDao.getOrgName(request, sessionUser.getSelectedOrgId())}</div>
</#if>
<div class="nav z-w100 z-text-center z-pointer" onclick="Zin.refreshIframeTabActive();">刷新</div>
<div class="nav z-w100 z-text-center z-pointer" onclick="Z.L.confirm('${context.getRootPath("/"+zhiqim_manager+"/logout.htm")}', '确实要退出吗?');">退出系统</div>
</div>
</div>
<!--容器开始 -->
<div id="container" class="container">
<!--侧边导航 -->
<div id="sidebar" class="sidebar ${sessionUser.getSidebarClass()}">
<!-- 个人中心 -->
<div class="z-h80 z-pd-t15 z-pd-l15" style="border-bottom:1px solid #22282e;">
<div class="z-float-left z-w50 z-h50 z-mg-r10"><img class="z-bd-rd50p z-w50 z-h50" src="${sessionUser.getAvatar50()}"></div>
<div class="z-float-left z-lh25">
<span class="z-px14 z-bold z-color-white">${sessionUser.getOperatorName()}</span><br>
<a href="javascript:void(0);" onclick="Zin.doClickChildMenu(this, '${context.getRootPath("/"+zhiqim_manager+"/profile.htm")}');"><span class="z-color-white z-px12">个人中心</span></a>
</div>
</div>
<!-- 栏目列表 -->
<#var topMenuCode = sessionUser.getSelectedTopMenuCodeOrFirstMenuCode(request, sessionUser.getMainUrl())/>
<#for topMenu : sessionUser.getTopMenuList()>
<#if sessionUser.hasChildMenu(topMenu.getMenuCode())>
<p><i class="z-font z-px18 z-mg-r5 ${topMenu.getMenuIcon()}"></i>#{topMenu.getMenuName()}<i class="z-arrow z-px5 z-gray"></i></p>
<ul id="${topMenu.getMenuCode()}" style="display: <#if topMenu.getMenuCode() == topMenuCode>block<#else>none</#if>;">
<#for childMenu : sessionUser.getChildMenuList(topMenu.getMenuCode())>
<li onclick="Zin.doClickChildMenu(this, '${context.getRootPath(childMenu.getMenuUrl())}');" <#if context.getRootPath(childMenu.getMenuUrl()) == sessionUser.getMainUrl()>class="active" data-url="${context.getRootPath(childMenu.getMenuUrl())}"</#if>><i class="z-font z-mg-r10 ${childMenu.getMenuIcon()}"></i>#{childMenu.getMenuName()}</li>
</#for>
</ul>
<#elseif Validates.isNotEmptyBlank(topMenu.getMenuUrl())>
<p onclick="Zin.doClickChildMenu(this, '${context.getRootPath(topMenu.getMenuUrl())}');"><i class="z-font z-px18 z-mg-r5 ${topMenu.getMenuIcon()}"></i>#{topMenu.getMenuName()}</p>
</#if>
</#for>
</div>
<!-- 框架导航 -->
<div class="iframenav z-h40 z-lh40 z-bg-white z-bd-b" style="margin-left:<#if sessionUser.hasSidebar()>200px<#else>0</#if>">
<div class="iframenav-prev" onclick="Zin.turnIframeTab(false);"><i class="z-font z-arrow-left"></i><i class="z-font z-arrow-left"></i></div>
<div class="iframenav-tab-wrap">
<ul class="iframenav-tab-list">
<li class="iframenav-tab-item active" id="tab_menu_index" onclick="Zin.selectIframeTabEvent(event);"><span>首页</span></li>
</ul>
</div>
<div class="iframenav-next" onclick="Zin.turnIframeTab(true);"><i class="z-font z-arrow-right"></i><i class="z-font z-arrow-right"></i></div>
<div class="iframenav-ctrl">
<div class="iframenav-ctrl-title" onclick="Zin.toggleIframeCtrlWrap();">关闭操作<i class="z-font z-arrow-down"></i></div>
<div class="iframenav-ctrl-wrap">
<ul>
<li class="iframenav-ctrl-item" onclick="Zin.selectIframeTabActive();">定位当前选项卡</li>
</ul>
<ul>
<li class="iframenav-ctrl-item" onclick="Zin.closeIframeTabAll();">关闭全部选项卡</li>
<li class="iframenav-ctrl-item" onclick="Zin.closeIframeTabOther();">关闭其他选项卡</li>
</ul>
</div>
</div>
</div>
<!--框架内容-->
<div id="mainbody" class="mainbody iframenav-cont z-h100p" style="margin-left:<#if sessionUser.hasSidebar()>200px<#else>0</#if>">
<div id="iframe_menu_index" class="iframenav-cont-item active">
<iframe id="mainFrame" name="mainFrame" frameborder="0" scrolling="auto" src="welcome.htm"></iframe>
</div>
</div>
<!--容器结束 -->
</div>
<#if Validates.isNotEmptyBlank(sessionUser.getOperator().getInitialPassword()) && sessionUser.getOperator().getInitialPassword().equals(sessionUser.getOperator().getOperatorPass())>
<script>
function doModifyPass(form)
{
var ajax = new Z.Ajax();
ajax.setContextPath("${context.getContextPath()}");
ajax.setClassName("ZmrProfilePresenter");
ajax.setMethodName("doModifyPass");
ajax.setParamForm(form);
ajax.setFailureAlert();
ajax.setSuccessAlertReloadParent("修改成功");
ajax.execute();
}
var dialog = new Z.Dialog();
dialog.title = '<span style="font-weight:bold">初始密码需要修改</span>';
dialog.text = '<div id="dialog_content"></div>';
dialog.width = 650;
dialog.height = 280;
dialog.fixed = true;
dialog.close = function ()
{//关闭
dialog.remove();
dialog = null;
}
dialog.execute();
dialog.$background.remove();//去边框
var text = `
<form>
<input type="text" class="z-hidden-fixed">
<input type="password" class="z-hidden-fixed">
<table class="z-table z-mg-t10 z-mg-b10">
<tr class="z-h60">
<td width="80" class="zi-pd-l10">旧&ensp;密&ensp;码:</td>
<td width="303"><input name="oldPassword" type="password" class="z-input z-w300 ${zmr_color_class}" maxlength="16" autocomplete="off"></td>
<td width="10" class="z-px14 z-text-red zi-pd-t6">*</td>
<td width="*" class="zi-pd-r10 z-px14 z-color-999">请输入原始密码</td>
</tr>
<tr class="z-h60">
<td class="zi-pd-l10">新&ensp;密&ensp;码:</td>
<td><input name="newPassword" type="password" class="z-input z-w300 ${zmr_color_class}" maxlength="16" autocomplete="off"></td>
<td class="z-px14 z-text-red zi-pd-t6">*</td>
<td class="zi-pd-r10 z-px12 z-color-999">6-16位密码,大写字母、小写字母、数字和特殊字符必须四选三,特殊字符支持</span><span class="z-px12 z-color-999 z-samp">.\`_~!@#$%</span></td>
</tr>
<tr class="z-h60">
<td class="zi-pd-l10">确认密码:</td>
<td><input name="newPassword2" type="password" class="z-input z-w300 ${zmr_color_class}" maxlength="16" autocomplete="off"></td>
<td class="z-px14 z-text-red zi-pd-t6">*</td>
<td class="zi-pd-r10 z-px14 z-color-999">再次输入新密码</td>
</tr>
</table>
<div class="z-absolute z-b0 z-l0 z-w100p z-h80 z-pd20 z-text-center z-bg-gray">
<button type="button" class="z-button z-large z-w100 ${zmr_color_class}" onclick="doModifyPass(this.form);">提交</button>
</div>
</form>
`;
Z("#dialog_content").htmlc(text);
dialog.innerAlert = false;
dialog.submit = function(){
}
document.getElementsByClassName("z-font z-error")[0].remove();
</script>
</#if>
</body>
</html>
@@ -0,0 +1,176 @@
<!DOCTYPE html>
<html>
<head>
<title>${context.getContextName()}</title>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
${Styles.src(zhiqim.css)}
${Scripts.src(zhiqim.js)}
${Scripts.src(jsencrypt.js)}
${Styles.htmlOverflowHidden()}
<style>
body{color:#333;background-color:#747f9d;background-image: url(ztmpl/zhiqim_manager/index_bg_00.jpg);background-repeat: no-repeat;background-size:100%;}
body,table,td,div{font-size:14px;line-height:120%;}
a,a:visited{color:#333;text-decoration:none;cursor:pointer;}
a:active,a:hover{color:#1e7eec;text-decoration:none;}
.header{position:fixed;width:100%;height:40px;line-height:40px;background-color:#000; background:rgba(0,0,0,0.2); filter:alpha(opacity=20);}
.footer{position:fixed;bottom:0px; width:100%;height:40px;background:rgba(255,255,255,0.2);line-height:40px;text-align:center;color:#fff;}
.login{background-image: url(ztmpl/zhiqim_manager/00_default/index_bg_center.jpg);background-repeat:repeat-y; width:825px;}
.input{background-color:#3f3f40;color:#fffafa;font-size:20px;letter-spacing:1px;border:2px solid #5c5c5c;border-radius:5px;height:45px;line-height:45px;text-indent:10px;font-family:Consolas,"微软雅黑";}
.input:focus{border-color:#708090;}
.input.verificationCode{letter-spacing:4px;}
</style>
<script>
Z.onload(function()
{//默认焦点
if (Z.V.isEmpty(Z("#operatorCode").val()))
Z("#operatorCode").focus();
else if (Z.V.isEmpty(Z("#operatorPass").val()))
Z("#operatorPass").focus();
else if (Z("#verificationCode").length > 0)
Z("#verificationCode").focus();
Z(document).keydown(function(e)
{
if (Z.E.key(e) != Z.E.KEY.ENTER)
return;
if (!Z.Dialog.cache.isEmpty())
return;
doLogin();
});
});
function doRememberCode(rememberCode)
{//取消记住账号时,同时取消记住密码
if (!rememberCode.checked)
{
Z("#rememberPass")[0].checked = false;
Z("[data-id=rememberPass]").removeClass("z-active");
}
}
function doRememberPass(rememberPass)
{//记住密码时,同时记住账号
if (rememberPass.checked)
{
Z("#rememberCode")[0].checked = true;
Z("[data-id=rememberCode]").addClass("z-active");
}
}
function doLogin()
{//登陆
var operatorCode = Z("#operatorCode").val();
if (Z.V.isEmptyBlank(operatorCode))
{//用户名和密码必填
Z.failure("用户名不能为空!",function(){
Z("#operatorCode").focus();
});
return;
}
var operatorPass = Z("#operatorPass").val();
if (Z.V.isEmptyBlank(operatorPass))
{//用户名和密码必填
Z.failure("密码不能为空!",function(){
Z("#operatorPass").focus();
});
return;
}
var verificationCode = Z("#verificationCode").val();
if (Z("#verificationCode").length > 0 && verificationCode.length != 4)
{//如果有验证码框的时候,要求值必须是4位(数字在输入时控制)
Z.failure("验证码为4位数字!");
return;
}
//对密码进行RSA加密
var publicKey = "${ZmrParamDao.getPublicKey(context)}";
var encrypt = new JSEncrypt();
encrypt.setPublicKey(publicKey);
operatorPass = encrypt.encrypt(operatorPass);
var ajax = new Z.Ajax();
ajax.setContextPath("${context.getContextPath()}");
ajax.setClassName("ZmrLoginPresenter");
ajax.setMethodName("doLogin");
ajax.addParam("operatorCode", operatorCode);
ajax.addParam("operatorPass", operatorPass);
ajax.addParam("verificationCode", verificationCode);
<#if hasRememberCode>
ajax.addParam("rememberCode", Z("#rememberCode")[0].checked);
</#if>
<#if hasRememberPass>
ajax.addParam("rememberPass", Z("#rememberPass")[0].checked);
</#if>
ajax.setFailureAlertRecovery();
ajax.setSuccessLocationResponse();
ajax.setLoading("login", "正在登录...", {disabled:true,recovery:false});
ajax.execute();
}
</script>
</head>
<body>
${Htmls.toCallFrame()}
<div class="header">
<div class="z-float-left z-w400 z-lh40 z-pd-l10 z-color-white">欢迎登录&nbsp;&nbsp;[&nbsp;${context.getContextName()}&nbsp;]</div>
<div class="z-float-right z-text-right z-w200 z-lh40 z-pd-r10"></div>
</div>
<div class="z-absolute-center-middle login" style="height:<#if hasVerificationCode && hasRememberCode>410<#elseif hasVerificationCode>360<#elseif hasRememberCode>350<#else>300</#if>px">
<table class="z-table z-h100p">
<tr>
<td width="50%" class="z-text-center"><img src="ztmpl/zhiqim_manager/index_logo_00.png"></td>
<td width="50%" valign="top" rowspan="2">
<input type="text" class="z-hidden-fixed"/>
<input type="password" class="z-hidden-fixed"/>
<table class="z-table z-mg-l30 z-h70-tr z-pd5 z-color-white">
<tr>
<td class="z-px20 z-text-gray z-mg-t10">用户登录</td>
</tr>
<tr>
<td><input id="operatorCode" class="z-w300 input" placeholder="用户名" value="#{operatorCode}" maxlength="16" spellcheck="false" autocomplete="off"></td>
</tr>
<tr>
<td><input id="operatorPass" type="password" class="z-w300 input" placeholder="密码" value="#{operatorPass}" maxlength="16" spellcheck="false" autocomplete="off"></td>
</tr>
<#if hasVerificationCode>
<tr>
<td>
<input id="verificationCode" class="z-w200 input verificationCode" placeholder="验证码" data-options="type:Numeric;paste:true;" maxlength="4" spellcheck="false" autocomplete="off">
<img class="z-pointer z-bd-rd5 z-mg-t-8" title="点击刷新验证码" onclick="this.src='service/vcode.jpg?bgColor=%231299ec&width=95&height=42&fontSize=20&yawp=true&t='+new Date().getTime();" src="service/vcode.jpg?bgColor=%231299ec&width=95&height=42&fontSize=20&yawp=true&t=${DateTimes.getDateTime17String()}">
</td>
</tr>
</#if>
<#if hasRememberCode>
<tr class="zi-h40">
<td class="z-px16 z-text-gray">
<input id="rememberCode" type="checkbox" data-role="z-checkbox" data-class="z-mg-r10 ${zmr_color_class}" onclick="doRememberCode(this);" <#if Validates.isNotEmpty(operatorCode)>checked</#if>>记住用户名
<#if hasRememberPass>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input id="rememberPass" type="checkbox" data-role="z-checkbox" data-class="z-mg-r10 ${zmr_color_class}" onclick="doRememberPass(this);" <#if Validates.isNotEmpty(operatorPass)>checked</#if>/>记住密码
</#if>
</td>
</tr>
</#if>
<tr>
<td><button id="login" class="z-button z-w300 z-h50 zi-px20 ${zmr_color_class}" onclick="doLogin()">&nbsp;&nbsp;</button></td>
</tr>
</table>
</td>
</tr>
<tr class="z-h120">
<td class="z-text-center" valign="top"><img src="ztmpl/zhiqim_manager/index_slogan_00.png"/></td>
</tr>
</table>
</div>
<div class="footer">${zmr_copyright}</div>
</body>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

@@ -0,0 +1,130 @@
<!DOCTYPE html>
<html>
<head>
<title>${context.getContextName()}</title>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
${Styles.src(zhiqim.css)}
${Scripts.src(zhiqim.js)}
${Styles.src(zmr_theme.css)}
${Scripts.src(zmr_theme.js)}
</head>
<body>
${Htmls.toCallFrame()}
<!--顶部导航 -->
<div class="topnav">
<div id="logo" class="logo z-pointer z-text-left ${sessionUser.getSidebarClass()}" onclick="Z.L.href('${context.getRootPath("/"+zhiqim_manager+"/main.htm")}');">${context.getAttribute("name")}</div>
<div class="topnavleft">
<div class="bar z-w60 z-text-center z-pointer" onclick="Zmr.sidebar();"><i class="z-font z-list z-px22"></i></div>
${zhiqim_manager_topnav_left_defined()}
</div>
<div class="topnavright">
${zhiqim_manager_topnav_right_defined()}
<#if ZmrOrgDao.getOrgList(request, sessionUser.getOperatorCode()).size() gt 1>
<div class="nav z-text-center z-pointer z-pd-l20 z-pd-r20" style="max-width:200px;" onclick="Zmr.selectOrgDialog();">${ZmrOrgDao.getOrgName(request, sessionUser.getSelectedOrgId())}</div>
</#if>
<div class="nav z-w80 z-text-center z-pointer" onclick="Z.L.href('${context.getRootPath("/"+zhiqim_manager+"/profile.htm")}');"><img class="z-bd-rd50p z-w40 z-h40" src="${sessionUser.getAvatar50()}"></div>
<div class="nav z-w100 z-text-center z-pointer" onclick="Z.L.reload();">刷新</div>
<div class="nav z-w100 z-text-center z-pointer" onclick="Z.L.confirm('${context.getRootPath("/"+zhiqim_manager+"/logout.htm")}', '确实要退出吗?');">退出系统</div>
</div>
</div>
<!--容器开始 -->
<div id="container" class="container">
<!--边导航 -->
<div id="sidebar" class="sidebar ${sessionUser.getSidebarClass()}">
<#var topMenuCode = sessionUser.getSelectedTopMenuCodeOrFirstMenuCode(request, designatedPath)/>
<#var childMenuCode = sessionUser.getSelectedSecondMenuCode(request, designatedPath)/>
<#for topMenu : sessionUser.getTopMenuList()>
<#if sessionUser.hasChildMenu(topMenu.getMenuCode())>
<p><i class="z-font z-px16 z-mg-r5 ${topMenu.getMenuIcon()}"></i>#{topMenu.getMenuName()}<i class="z-arrow z-px5"><span></span></i></p>
<ul id="${topMenu.getMenuCode()}" style="display: <#if topMenu.getMenuCode() == topMenuCode>block<#else>none</#if>;">
<#for childMenu : sessionUser.getChildMenuList(topMenu.getMenuCode())>
<li onclick="Z.L.href('${context.getRootPath(childMenu.getMenuUrl())}');" <#if childMenu.getMenuCode() == childMenuCode>class="active"</#if>>#{childMenu.getMenuName()}</li>
</#for>
</ul>
<#elseif Validates.isNotEmptyBlank(topMenu.getMenuUrl())>
<p onclick="Z.L.href('${context.getRootPath(topMenu.getMenuUrl())}');"><i class="z-font z-px16 z-mg-r5 ${topMenu.getMenuIcon()}"></i>#{topMenu.getMenuName()}</p>
</#if>
</#for>
</div>
<!--主体-->
<div id="mainbody" class="mainbody" style="margin-left:<#if sessionUser.hasSidebar()>200px<#else>0</#if>">
<#include include/>
</div>
<!-- 容器结束 -->
</div>
<!--脚注-->
<div class="footer">
<div class="footer-wrap">${zmr_copyright}</div>
</div>
<#if Validates.isNotEmptyBlank(sessionUser.getOperator().getInitialPassword()) && sessionUser.getOperator().getInitialPassword().equals(sessionUser.getOperator().getOperatorPass())>
<script>
function doModifyPass(form)
{
var ajax = new Z.Ajax();
ajax.setContextPath("${context.getContextPath()}");
ajax.setClassName("ZmrProfilePresenter");
ajax.setMethodName("doModifyPass");
ajax.setParamForm(form);
ajax.setFailureAlert();
ajax.setSuccessAlertReloadParent("修改成功");
ajax.execute();
}
var dialog = new Z.Dialog();
dialog.title = '<span style="font-weight:bold">初始密码需要修改</span>';
dialog.text = '<div id="dialog_content"></div>';
dialog.width = 650;
dialog.height = 280;
dialog.fixed = true;
dialog.close = function ()
{//关闭
dialog.remove();
dialog = null;
}
dialog.execute();
dialog.$background.remove();//去边框
var text = `
<form>
<input type="text" class="z-hidden-fixed">
<input type="password" class="z-hidden-fixed">
<table class="z-table z-mg-t10 z-mg-b10">
<tr class="z-h60">
<td width="80" class="zi-pd-l10">旧&ensp;密&ensp;码:</td>
<td width="303"><input name="oldPassword" type="password" class="z-input z-w300 ${zmr_color_class}" maxlength="16" autocomplete="off"></td>
<td width="10" class="z-px14 z-text-red zi-pd-t6">*</td>
<td width="*" class="zi-pd-r10 z-px14 z-color-999">请输入原始密码</td>
</tr>
<tr class="z-h60">
<td class="zi-pd-l10">新&ensp;密&ensp;码:</td>
<td><input name="newPassword" type="password" class="z-input z-w300 ${zmr_color_class}" maxlength="16" autocomplete="off"></td>
<td class="z-px14 z-text-red zi-pd-t6">*</td>
<td class="zi-pd-r10 z-px12 z-color-999">6-16位密码,大写字母、小写字母、数字和特殊字符必须四选三,特殊字符支持</span><span class="z-px12 z-color-999 z-samp">.\`_~!@#$%</span></td>
</tr>
<tr class="z-h60">
<td class="zi-pd-l10">确认密码:</td>
<td><input name="newPassword2" type="password" class="z-input z-w300 ${zmr_color_class}" maxlength="16" autocomplete="off"></td>
<td class="z-px14 z-text-red zi-pd-t6">*</td>
<td class="zi-pd-r10 z-px14 z-color-999">再次输入新密码</td>
</tr>
</table>
<div class="z-absolute z-b0 z-l0 z-w100p z-h80 z-pd20 z-text-center z-bg-gray">
<button type="button" class="z-button z-large z-w100 ${zmr_color_class}" onclick="doModifyPass(this.form);">提交</button>
</div>
</form>
`;
Z("#dialog_content").htmlc(text);
dialog.innerAlert = false;
dialog.submit = function(){
}
document.getElementsByClassName("z-font z-error")[0].remove();
</script>
</#if>
</body>
</html>
@@ -0,0 +1,97 @@
@charset "utf-8";
/* ZhiqimUI */
.z-input{color:#333;}
/* global */
body{color:#333;background-color:#fff;}
body,table,td,div{font-size:14px;line-height:120%;}
a,a:visited{color:#333;text-decoration:none;cursor:pointer;}
a:active,a:hover{color:#216a9d;text-decoration:none;}
a.blue,a.blue:visited{color:#0066cc;text-decoration:none;cursor:pointer;}
a.blue:active,a.blue:hover{color:#0066cc;text-decoration:underline;}
/* topnav */
.topnav {position:relative;width:100%;min-width:680px;color: #fff;background-color:#008fbf;height:55px;z-index:99;}
.topnav .logo {float:left;width:200px;height:55px;padding:0 10px;overflow:hidden;font-size:24px;line-height:55px;background-color:#2a80b9;word-break:break-all;word-wrap:break-word;}
.topnav .topnavleft {float:left;height:55px;}
.topnav .topnavleft .bar {float:left;height:55px;line-height:55px;}
.topnav .topnavleft .first {border-left:1px solid #2a80b9;}
.topnav .topnavleft .nav, .topnav .topnavleft .nav-only {float:left;height:55px;line-height:55px;border-right:1px solid #2a80b9;}
.topnav .topnavleft .nav:hover{background-color:#2a80b9; color:#fff;}
.topnav .topnavright {float:right;height:55px;}
.topnav .topnavright .nav, .topnav .topnavright .nav-only {float:left;height:55px;line-height:55px; border-left:1px solid #2a80b9;}
.topnav .topnavright .nav:hover {background-color:#2a80b9; color:#fff;}
/* container */
.container {position:relative;width:100%;height:100%; min-height:1000px;overflow:hidden;background-color:#edf3f7;}
/*[替换z-tabnav的背景色为容器背景色]*/
.container .z-tabnav>nav li.z-active{border-bottom:1px solid #edf3f7;}
.container .z-tabnav>nav li.z-active:hover{background-color:#edf3f7;}
.sidebar {position:relative; float: left; width:200px;min-height:1000px;height:100%;margin-bottom:-9999px;padding-bottom:9999px;overflow:hidden; background-color: #f2f2f2; border-right:1px solid #d8dce5;}
.sidebar p{position:relative;float:left;width:200px; height:40px;line-height:40px; border-bottom:1px solid #e5e5e5;border-left:3px solid transparent;display:block;padding-left:10px;cursor:pointer;}
.sidebar p a{color:#333;}
.sidebar p .z-arrow{position:absolute;top:16px;right:10px;}
.sidebar p .z-arrow>span{border-color:#f2f2f2 transparent transparent;}
.sidebar p:hover{width:200px;background-color:#fafafa; border-left:3px solid #2a80b9;color:#216a9d;}
.sidebar p.active{width:200px;background-color:#fafafa; border-left:3px solid #2a80b9;color:#216a9d;}
.sidebar p:hover>.z-arrow>span{border-color:#fafafa transparent transparent;}
.sidebar p.active>.z-arrow>span{border-color:#fafafa transparent transparent;}
.sidebar ul{position:relative;width:200px;height:auto;overflow:hidden;}
.sidebar ul li{float:left;width:200px;border-left:0px;line-height:35px;text-indent:35px;border-bottom:1px dashed #e5e5e5;background-color:#fff;background-color:#fff;background-image:url(ico_n.gif); background-position:15px; background-repeat:no-repeat;display:block;cursor:pointer;}
.sidebar ul li:hover{background-image: url(ico_h.gif) ; background-repeat:no-repeat;color:#216a9d;}
.sidebar ul li.active{background-image:url(ico_h.gif); background-repeat:no-repeat;color:#216a9d;}
/* iframenav */
.iframenav{position:relative;margin-left:200px;height:40px;line-height:40px;}
/* [iframenav翻页] */
.iframenav-prev,.iframenav-next{position:absolute;top:0;width:50px;height:39px;z-index:1;background:#fff;cursor:pointer;padding:0 22px;text-align:center;line-height:39px;}
.iframenav-prev:hover,.iframenav-next:hover{background-color:#f5f5f5;}
.iframenav-prev{left:0;border-right:1px solid #d3d3d3;}
.iframenav-next{right:100px;border-left:1px solid #d3d3d3;}
.iframenav-prev .z-font,.iframenav-next .z-font{color:#999;margin-left:-8px;}
/* [iframenav控制] */
.iframenav-ctrl{position:absolute;top:0;right:0;}
.iframenav-ctrl-title{position:absolute;top:0;right:0;width:100px;height:39px;z-index:1;border-left:1px solid #d3d3d3;text-align:center;line-height:39px;color:#666;background:#fff;cursor:pointer;}
.iframenav-ctrl-title:hover{background-color:#f5f5f5;}
.iframenav-ctrl-title .z-font{color:#999;margin-left:6px;font-size:10px;}
.iframenav-ctrl-wrap{position:absolute;top:39px;right:0;display:none;width:150px;height:130px;z-index:2;background-color:#fff;border:1px solid #d3d3d3;}
.iframenav-ctrl-wrap ul{padding:10px 0;}
.iframenav-ctrl-wrap ul+ul{border-top:1px solid #ccc;}
.iframenav-ctrl-wrap li{padding:0 25px;line-height:30px;cursor:pointer;}
.iframenav-ctrl-wrap li:hover{background:#f1f1f1;}
/* [iframenav选项卡] */
.iframenav-tab-wrap{height:39px;margin:0 150px 0 50px;overflow:hidden;position:relative;}
.iframenav-tab-list{position:absolute;left:0;top:0;height:39px;background-color:#fff;overflow:hidden;}
.iframenav-tab-item{position:relative;float:left;line-height:39px;border-right:1px solid #d3d3d3;padding:0 35px 0 20px;background:#fff;color:#666;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}
.iframenav-tab-item.active{background-color:#d4d8db;}
.iframenav-tab-item:hover{color:#222;}
.iframenav-tab-item:first-child{padding-right:23px;}
.iframenav-tab-item .z-font{position:absolute;top:2px;width:25px;line-height:39px;color:#666;font-size:12px;cursor:pointer;text-align:center;}
.iframenav-tab-item .z-error{right:0;padding-right:5px;}
.iframenav-tab-item .z-error:hover{color:#f00;}
/* [iframenav内容页] */
.iframenav-cont{}
.iframenav-cont-item{width:100%;height:100%;display:none;}
.iframenav-cont-item.active{display:block;}
.iframenav-cont-item > iframe{width:100%;height:100%;border:0;margin:0;padding:0;}
/* mainbody */
.mainbody{margin-left:200px;}
.mainbody .breadcrumb{position:relative;float:left;width: 100%;background-color:#f5f5f5;}
.mainbody .content{position:relative;float:left;width:100%;padding:20px;}
/* footer */
.footer {position:relative;width:100%;height:40px;display:block;overflow:hidden;background-color:#2a80b9;z-index:99;}
.footer-wrap {position:relative;margin:0 auto;height:100%;line-height:40px;text-align: center;color:#fff;}
@@ -0,0 +1,113 @@
/*
* 版权所有 (C) 2015 知启蒙(ZHIQIM) 保留所有权利。
*
* 指定登记&发行网站: https://www.zhiqim.com/ 欢迎加盟知启蒙,[编程有你,知启蒙一路随行]。
*
* 本文采用《知启蒙许可证》,除非符合许可证,否则不可使该文件!
* 1、您可以免费使用、修改、合并、出版发行和分发,再授权软件、软件副本及衍生软件;
* 2、您用于商业用途时,必须在原作者指定的登记网站进行实名登记;
* 3、您在使用、修改、合并、出版发行和分发时,必须包含版权声明、许可声明,及保留原作者的著作权、商标和专利等知识产权;
* 4、您在互联网、移动互联网等大众网络下发行和分发再授权软件、软件副本及衍生软件时,必须在原作者指定的发行网站进行发行和分发;
* 5、您可以在以下链接获取一个完整的许可证副本。
*
* 许可证链接:http://zhiqim.org/licenses/LICENSE.htm
*
* 除非法律需要或书面同意,软件由原始码方式提供,无任何明示或暗示的保证和条件。详见完整许可证的权限和限制。
*/
+(function(Z)
{//BEGIN
/**************************************************/
//定义全局的对象,便于所有的页面调用
/**************************************************/
var Zmr = window.Zmr = {};
Zmr.selectOrgDialog = function()
{//弹出组织选择框
var dialog = new Z.Dialog();
dialog.title = "选择组织";
dialog.url = "orgSelector.htm";
dialog.width = 392;
dialog.height = 423;
dialog.fixed = true;
dialog.scroll = true;
dialog.execute();
};
Zmr.sidebar = function()
{//打开&关闭边导航
var $sidebar = Z("#sidebar");
if ($sidebar.isHide())
{
$sidebar.show();
Z("#logo").show();
Z("#mainbody").css("margin-left", 200);
}
else
{
$sidebar.hide();
Z("#logo").hide();
Z("#mainbody").css("margin-left", 0);
}
Z.ajax().setContextPath(Zmr.contextPath)
.setClassName("sessionUser").setMethodName("setSidebar").addParam(!$sidebar.isHide())
.execute();
};
Zmr.calcMainbodyHeight = function()
{//计算主体高度
var height = Z(document).clientHeight()-55;//-55为topnav的高度
Z("#container").css("height", height);
Z("#mainbody").css("height", height-40);//40为iframenav高度
}
Zmr.treeExpand = function(code)
{//树菜单展开和关闭
var $menu = Z("#menu-"+code);
var $ico = Z("#ico-"+code);
if (!$menu.isHide())
{
$menu.hide();
if ($ico.hasClass("z-mlastnode"))
$ico.removeClass("z-mlastnode").addClass("z-plastnode");
else
$ico.removeClass("z-mnode").addClass("z-pnode");
}
else
{
$menu.show();
if ($ico.hasClass("z-plastnode"))
$ico.removeClass("z-plastnode").addClass("z-mlastnode");
else
$ico.removeClass("z-pnode").addClass("z-mnode");
}
};
Zmr.addTopMenuClick = function()
{//增加顶级栏目点击事件
Zmr.doClickTopMenuUp = false;
Zmr.doClickTopMenuDw = false;
Z(".sidebar p").click(function()
{
if (Zmr.doClickTopMenuUp || Zmr.doClickTopMenuDw)
return;
Zmr.doClickTopMenuUp = true;Zmr.doClickTopMenuDw = true;
Z(this).next("ul").slideToggle(200, function(){Zmr.doClickTopMenuDw = false;})
.siblings("ul").slideUp(200, function(){Zmr.doClickTopMenuUp = false;});
});
};
/**************************************************/
//定义初始化滑动菜单
/**************************************************/
Z.onload(function()
{//菜单隐藏展开
Zmr.addTopMenuClick();
});
//END
})(zhiqim);
@@ -0,0 +1,61 @@
<#--变量定义-->
<#var zmr_theme.css = context.getRootPath("/ztmpl/zhiqim_manager/"+themeMain+"/classic_2019010101.css")/>
<#var zmr_theme.js = context.getRootPath("/ztmpl/zhiqim_manager/"+themeMain+"/classic_2019010101.js")/>
<#var zmr_color_class = "z-blue"/>
<#var zmr_sidebar_width = 200/>
<#var zmr_topnav_height = 55/>
<#var zmr_breadcrumb_height = 40/>
<#var zmr_title_bgcolor = "#f5f5f5"/>
<#var zmr_thead_bgcolor = "#f5f5f5"/>
<#var zmr_tr_odd_bgcolor = "#f6fafd"/>
<#var zmr_tr_even_bgcolor = "#ffffff"/>
<#var zmr_tr_over_bgcolor = "#f6fafd"/>
<#var zmr_tfoot_bgcolor = "#ffffff"/>
<#--面包屑 -->
<#function zhiqim_manager_breadcrumb_name(name)>
<#if !ZmrParamDao.isThemeFrame(context)>
<div class="breadcrumb z-h40 z-lh40 z-bg-white z-bd-b">
<span class="z-pd-l20">${name}</span>
</div>
</#if>
</#function>
<#--面包屑一级栏目 -->
<#function zhiqim_manager_breadcrumb(name)>
<#if !ZmrParamDao.isThemeFrame(context)>
<div class="breadcrumb z-h40 z-lh40 z-bg-white z-bd-b">
<span class="z-pd-l20">当前位置:<a href="${context.getRootPath(ZmlContexts.parseZmlContent(request, ZmrParamDao.getMainIndexUrl(context)))}">首页</a>&nbsp;&nbsp;&nbsp;>>&nbsp;&nbsp;&nbsp;<span style="color:#0280d4;">${name}</span></span>
</div>
</#if>
</#function>
<#--面包屑二级栏目 -->
<#function zhiqim_manager_breadcrumb_parent(parentUrl, parentName, name)>
<#if !ZmrParamDao.isThemeFrame(context)>
<div class="breadcrumb z-h40 z-lh40 z-bg-white z-bd-b">
<span class="z-pd-l15">当前位置:<a href="${context.getRootPath(ZmlContexts.parseZmlContent(request, ZmrParamDao.getMainIndexUrl(context)))}">首页</a>&nbsp;&nbsp;&nbsp;>>&nbsp;&nbsp;&nbsp;<a href="${parentUrl}">${parentName}</a>&nbsp;&nbsp;&nbsp;>>&nbsp;&nbsp;&nbsp;<span style="color:#0280d4;">${name}</span></span>
</div>
</#if>
</#function>
<#--面包屑三级栏目 -->
<#function zhiqim_manager_breadcrumb_parent_last(parentUrl, parentName, lastUrl, lastName, name)>
<#if !ZmrParamDao.isThemeFrame(context)>
<div class="breadcrumb z-h40 z-lh40 z-bg-white z-bd-b">
<span class="z-pd-l15">当前位置:<a href="${context.getRootPath(ZmlContexts.parseZmlContent(request, ZmrParamDao.getMainIndexUrl(context)))}">首页</a>&nbsp;&nbsp;&nbsp;>>&nbsp;&nbsp;&nbsp;<a href="${parentUrl}">${parentName}</a>&nbsp;&nbsp;&nbsp;>>&nbsp;&nbsp;&nbsp;<a href="${lastUrl}">${lastName}</a>&nbsp;&nbsp;&nbsp;>>&nbsp;&nbsp;&nbsp;<span style="color:#0280d4;">${name}</span></span>
</div>
</#if>
</#function>
<#--显示记录分页-->
<#function zhiqim_manager_paging(result, link)>
<table class="z-table z-bordered zi-bd-t-none z-bg-white">
<tr class="z-h50">
<td><div class="z-float-right z-mg-r10">${PagingStd.toHtmlLink(result, link)}</div></td>
</tr>
</table>
</#function>
<#--显示记录分页JS-->
<#function zhiqim_manager_paging_jsMethod(result, jsMethod)>
<table class="z-table z-bordered zi-bd-t-none z-bg-white">
<tr class="z-h50">
<td><div class="z-float-right z-mg-r10">${PagingStd.toHtmlClick(result, jsMethod)}</div></td>
</tr>
</table>
</#function>
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

@@ -0,0 +1,35 @@
<#var zmr_sidebar_width = 0/>
<#var zmr_topnav_height = 0/>
<!DOCTYPE html>
<html>
<head>
<title>${context.getContextName()}</title>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
${Styles.src(zhiqim.css)}
${Scripts.src(zhiqim.js)}
${Styles.src(zmr_theme.css)}
${Scripts.src(zmr_theme.js)}
<#if request.getPathInContext() == "/"+zhiqim_manager+"/param.htm" || request.getPathInContext() == "/"+zhiqim_manager+"/themeMain.htm">
<script>
if (top.location == self.location)
{//从其他主题切换过来的时候
top.location.href = "${context.getRootPath("/"+zhiqim_manager+"/main.htm")}";
}
</script>
</#if>
</head>
<body>
${Htmls.toCallFrame()}
<div class="container">
<div class="mainbody" style="margin-left:0;">
<!-- 主体开始 -->
<#include include/>
<!-- 主体结束 -->
</div>
</div>
</body>
</html>
@@ -0,0 +1,167 @@
<!DOCTYPE html>
<html>
<head>
<title>${context.getContextName()}</title>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
${Styles.src(zhiqim.css)}
${Scripts.src(zhiqim.js)}
${Styles.src(zmr_theme.css)}
${Scripts.src(zmr_theme.js)}
${Scripts.src(zhiqim_iframenav.js)}
${Styles.htmlOverflowHidden()}
<script>
Zmr.contextPath = "${context.getContextPath()}";
Zin.contextPath = "${context.getContextPath()}";
Z.onload(Zmr.calcMainbodyHeight);
Z(window).resize(Zmr.calcMainbodyHeight);
Z(window).resize(Zin.setTranslateForShowActive);
<#if !sessionUser.isWelcomeUrl()>
Z.onload(function()
{
var $elem = Z("#sidebar [data-url]");
if ($elem.length > 0)
{//存在指定主页,主动打开
Zin.doClickChildMenu($elem[0], $elem.attr("data-url"));
}
});
</#if>
</script>
</head>
<body>
<!--顶部导航 -->
<div class="topnav">
<div id="logo" class="logo z-pointer z-text-left ${sessionUser.getSidebarClass()}" onclick="Zin.selectIframeTab('menu_index');">${context.getAttribute("name")}</div>
<div class="topnavleft">
<div class="bar z-w60 z-text-center z-pointer" onclick="Zmr.sidebar();"><i class="z-font z-list z-px22"></i></div>
${zhiqim_manager_topnav_left_defined()}
</div>
<div class="topnavright">
${zhiqim_manager_topnav_right_defined()}
<#if ZmrOrgDao.getOrgList(request, sessionUser.getOperatorCode()).size() gt 1>
<div class="nav z-text-center z-pointer z-pd-l20 z-pd-r20" style="max-width:200px;" onclick="Zmr.selectOrgDialog();">${ZmrOrgDao.getOrgName(request, sessionUser.getSelectedOrgId())}</div>
</#if>
<div class="nav z-w80 z-text-center z-pointer" onclick="Zin.doClickChildMenu(this, '${context.getRootPath("/"+zhiqim_manager+"/profile.htm")}');" data-text="个人中心"><img class="z-bd-rd50p z-w40 z-h40" src="${sessionUser.getAvatar50()}"></div>
<div class="nav z-w100 z-h50 z-text-center z-pointer" onclick="Zin.refreshIframeTabActive();">刷新</div>
<div class="nav z-w100 z-h50 z-text-center z-pointer" onclick="Z.L.confirm('${context.getRootPath("/"+zhiqim_manager+"/logout.htm")}', '确实要退出吗?');">退出系统</div>
</div>
</div>
<!--容器开始 -->
<div id="container" class="container">
<!--侧边导航 -->
<div id="sidebar" class="sidebar ${sessionUser.getSidebarClass()}">
<#var topMenuCode = sessionUser.getSelectedTopMenuCodeOrFirstMenuCode(request, sessionUser.getMainUrl())/>
<#for topMenu : sessionUser.getTopMenuList()>
<#if sessionUser.hasChildMenu(topMenu.getMenuCode())>
<p><i class="z-font z-px16 z-mg-r5 ${topMenu.getMenuIcon()}"></i>#{topMenu.getMenuName()}<i class="z-arrow z-px5"><span></span></i></p>
<ul id="${topMenu.getMenuCode()}" style="display: <#if topMenu.getMenuCode() == topMenuCode>block<#else>none</#if>;">
<#for childMenu : sessionUser.getChildMenuList(topMenu.getMenuCode())>
<li onclick="Zin.doClickChildMenu(this, '${context.getRootPath(childMenu.getMenuUrl())}');" <#if context.getRootPath(childMenu.getMenuUrl()) == sessionUser.getMainUrl()>class="active" data-url="${context.getRootPath(childMenu.getMenuUrl())}"</#if>>#{childMenu.getMenuName()}</li>
</#for>
</ul>
<#elseif Validates.isNotEmptyBlank(topMenu.getMenuUrl())>
<p onclick="Zin.doClickChildMenu(this, '${context.getRootPath(topMenu.getMenuUrl())}');"><i class="z-font z-px16 z-mg-r5 ${topMenu.getMenuIcon()}"></i>#{topMenu.getMenuName()}</p>
</#if>
</#for>
</div>
<!-- 框架导航 -->
<div class="iframenav z-h40 z-lh40 z-bg-white z-bd-b" style="margin-left:<#if sessionUser.hasSidebar()>200px<#else>0</#if>">
<div class="iframenav-prev" onclick="Zin.turnIframeTab(false);"><i class="z-font z-arrow-left"></i><i class="z-font z-arrow-left"></i></div>
<div class="iframenav-tab-wrap">
<ul class="iframenav-tab-list">
<li class="iframenav-tab-item active" id="tab_menu_index" onclick="Zin.selectIframeTabEvent(event);"><span>首页</span></li>
</ul>
</div>
<div class="iframenav-next" onclick="Zin.turnIframeTab(true);"><i class="z-font z-arrow-right"></i><i class="z-font z-arrow-right"></i></div>
<div class="iframenav-ctrl">
<div class="iframenav-ctrl-title" onclick="Zin.toggleIframeCtrlWrap();">关闭操作<i class="z-font z-arrow-down"></i></div>
<div class="iframenav-ctrl-wrap">
<ul>
<li class="iframenav-ctrl-item" onclick="Zin.selectIframeTabActive();">定位当前选项卡</li>
</ul>
<ul>
<li class="iframenav-ctrl-item" onclick="Zin.closeIframeTabAll();">关闭全部选项卡</li>
<li class="iframenav-ctrl-item" onclick="Zin.closeIframeTabOther();">关闭其他选项卡</li>
</ul>
</div>
</div>
</div>
<!--框架内容-->
<div id="mainbody" class="mainbody iframenav-cont z-h100p" style="margin-left:<#if sessionUser.hasSidebar()>200px<#else>0</#if>">
<div id="iframe_menu_index" class="iframenav-cont-item active">
<iframe id="mainFrame" name="mainFrame" frameborder="0" scrolling="auto" src="welcome.htm"></iframe>
</div>
</div>
<!--容器结束 -->
</div>
<#if Validates.isNotEmptyBlank(sessionUser.getOperator().getInitialPassword()) && sessionUser.getOperator().getInitialPassword().equals(sessionUser.getOperator().getOperatorPass())>
<script>
function doModifyPass(form)
{
var ajax = new Z.Ajax();
ajax.setContextPath("${context.getContextPath()}");
ajax.setClassName("ZmrProfilePresenter");
ajax.setMethodName("doModifyPass");
ajax.setParamForm(form);
ajax.setFailureAlert();
ajax.setSuccessAlertReloadParent("修改成功");
ajax.execute();
}
var dialog = new Z.Dialog();
dialog.title = '<span style="font-weight:bold">初始密码需要修改</span>';
dialog.text = '<div id="dialog_content"></div>';
dialog.width = 650;
dialog.height = 280;
dialog.fixed = true;
dialog.close = function ()
{//关闭
dialog.remove();
dialog = null;
}
dialog.execute();
dialog.$background.remove();//去边框
var text = `
<form>
<input type="text" class="z-hidden-fixed">
<input type="password" class="z-hidden-fixed">
<table class="z-table z-mg-t10 z-mg-b10">
<tr class="z-h60">
<td width="80" class="zi-pd-l10">旧&ensp;密&ensp;码:</td>
<td width="303"><input name="oldPassword" type="password" class="z-input z-w300 ${zmr_color_class}" maxlength="16" autocomplete="off"></td>
<td width="10" class="z-px14 z-text-red zi-pd-t6">*</td>
<td width="*" class="zi-pd-r10 z-px14 z-color-999">请输入原始密码</td>
</tr>
<tr class="z-h60">
<td class="zi-pd-l10">新&ensp;密&ensp;码:</td>
<td><input name="newPassword" type="password" class="z-input z-w300 ${zmr_color_class}" maxlength="16" autocomplete="off"></td>
<td class="z-px14 z-text-red zi-pd-t6">*</td>
<td class="zi-pd-r10 z-px12 z-color-999">6-16位密码,大写字母、小写字母、数字和特殊字符必须四选三,特殊字符支持</span><span class="z-px12 z-color-999 z-samp">.\`_~!@#$%</span></td>
</tr>
<tr class="z-h60">
<td class="zi-pd-l10">确认密码:</td>
<td><input name="newPassword2" type="password" class="z-input z-w300 ${zmr_color_class}" maxlength="16" autocomplete="off"></td>
<td class="z-px14 z-text-red zi-pd-t6">*</td>
<td class="zi-pd-r10 z-px14 z-color-999">再次输入新密码</td>
</tr>
</table>
<div class="z-absolute z-b0 z-l0 z-w100p z-h80 z-pd20 z-text-center z-bg-gray">
<button type="button" class="z-button z-large z-w100 ${zmr_color_class}" onclick="doModifyPass(this.form);">提交</button>
</div>
</form>
`;
Z("#dialog_content").htmlc(text);
dialog.innerAlert = false;
dialog.submit = function(){
}
document.getElementsByClassName("z-font z-error")[0].remove();
</script>
</#if>
</body>
</html>
@@ -0,0 +1,166 @@
<!DOCTYPE html>
<html>
<head>
<title>${context.getContextName()}</title>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
${Styles.src(zhiqim.css)}
${Scripts.src(zhiqim.js)}
${Scripts.src(jsencrypt.js)}
${Styles.htmlOverflowHidden()}
<style>
body{color:#333;background-color:#fff;background-image: url(ztmpl/zhiqim_manager/index_bg_01.jpg);background-repeat: no-repeat;background-size:100%;}
body,table,td,div{font-size:14px;line-height:120%;}
a,a:visited{color:#333;text-decoration:none;cursor:pointer;}
a:active,a:hover{color:#1e7eec;text-decoration:none;}
.header{position:fixed;width:100%;height:40px;line-height:40px;background-color:#000; background:rgba(0,0,0,0.2); filter:alpha(opacity=20);}
.footer{position:fixed;bottom:0px; width:100%;height:40px;background:rgba(255,255,255,0.2);line-height:40px;text-align:center;color:#fff;}
.login{width:520px;;border:1px solid #ccc;background-color: #ffffff;border-radius:10px;padding:20px;}
.input{color:#666;font-size:20px;border:2px solid #cecfcf;border-radius:5px;height:50px;line-height:50px;text-indent:10px;font-family:Consolas,"微软雅黑";}
.input.verificationCode{letter-spacing:4px;}
</style>
<script>
Z.onload(function()
{//默认焦点
if (Z("#operatorCode").val() == "")
Z("#operatorCode").focus();
else if (Z("#operatorPass").val() == "")
Z("#operatorPass").focus();
else if (Z("#verificationCode").val() == null)
Z("#verificationCode").focus();
else
Z("#operatorCode").focus();
Z(document).keydown(function(e)
{
if (Z.E.key(e) != Z.E.KEY.ENTER)
return;
if (!Z.Dialog.cache.isEmpty())
return;
doLogin();
});
});
function doRememberCode(rememberCode)
{//取消记住账号时,同时取消记住密码
if (!rememberCode.checked)
{
Z("#rememberPass")[0].checked = false;
Z("[data-id=rememberPass]").removeClass("z-active");
}
}
function doRememberPass(rememberPass)
{//记住密码时,同时记住账号
if (rememberPass.checked)
{
Z("#rememberCode")[0].checked = true;
Z("[data-id=rememberCode]").addClass("z-active");
}
}
function doLogin()
{//登陆
var operatorCode = Z("#operatorCode").val();
if (Z.V.isEmptyBlank(operatorCode))
{//用户名和密码必填
Z.failure("用户名不能为空!",function(){
Z("#operatorCode").focus();
});
return;
}
var operatorPass = Z("#operatorPass").val();
if (Z.V.isEmptyBlank(operatorPass))
{//用户名和密码必填
Z.failure("密码不能为空!",function(){
Z("#operatorPass").focus();
});
return;
}
var verificationCode = Z("#verificationCode").val();
if (Z("#verificationCode").length > 0 && verificationCode.length != 4)
{//如果有验证码框的时候,要求值必须是4位(数字在输入时控制)
Z.failure("验证码为4位数字!");
return;
}
//对密码进行RSA加密
var publicKey = "${ZmrParamDao.getPublicKey(context)}";
var encrypt = new JSEncrypt();
encrypt.setPublicKey(publicKey);
operatorPass = encrypt.encrypt(operatorPass);
var ajax = new Z.Ajax();
ajax.setContextPath("${context.getContextPath()}");
ajax.setClassName("ZmrLoginPresenter");
ajax.setMethodName("doLogin");
ajax.addParam("operatorCode", operatorCode);
ajax.addParam("operatorPass", operatorPass);
ajax.addParam("verificationCode", verificationCode);
<#if hasRememberCode>
ajax.addParam("rememberCode", Z("#rememberCode")[0].checked);
</#if>
<#if hasRememberPass>
ajax.addParam("rememberPass", Z("#rememberPass")[0].checked);
</#if>
ajax.setFailureAlertRecovery();
ajax.setSuccessLocationResponse();
ajax.setLoading("login", "正在登录...", {disabled:true,recovery:false});
ajax.execute();
}
</script>
</head>
<body>
<div class="header">
<div class="z-float-left z-w400 z-lh40 z-pd-l10 z-color-white">欢迎登录&nbsp;&nbsp;[&nbsp;${context.getContextName()}&nbsp;]</div>
<div class="z-float-right z-text-right z-w200 z-lh40 z-pd-r10"></div>
</div>
<div class="z-absolute-center-middle login" style="height:<#if hasVerificationCode && hasRememberCode>420<#elseif hasVerificationCode>390<#elseif hasRememberCode>350<#else>320</#if>px">
<input type="text" class="z-hidden-fixed"/>
<input type="password" class="z-hidden-fixed"/>
<div class="z-px24 zi-bd-b z-color-666 z-pd-b10"><i class="z-font z-customer"></i>&nbsp;&nbsp;用户登录</div>
<div style="padding:25px 40px 20px 30px;">
<table class="z-table z-pd5 z-h100p">
<tr class="z-h70">
<td><input id="operatorCode" class="z-w100p input" placeholder="用户名" value="#{operatorCode}" maxlength="16" spellcheck="false" autocomplete="off"></td>
</tr>
<tr class="z-h70">
<td><input id="operatorPass" type="password" class="z-w100p input" placeholder="密码" value="#{operatorPass}" maxlength="16" spellcheck="false" autocomplete="off"></td>
</tr>
<#if hasVerificationCode>
<tr class="z-h70">
<td>
<input id="verificationCode" class="input verificationCode" style="width:270px" placeholder="验证码" data-options="type:Numeric;paste:true;" maxlength="4" spellcheck="false" autocomplete="off">
<img class="z-pointer z-bd-rd5 z-mg-t-6" title="点击刷新验证码" onclick="this.src='service/vcode.jpg?bgColor=%231299ec&width=120&height=50&fontSize=20&yawp=true&t='+new Date().getTime();" src="service/vcode.jpg?bgColor=%231299ec&width=120&height=50&fontSize=20&yawp=true&t=${DateTimes.getDateTime17String()}">
</td>
</tr>
</#if>
<#if hasRememberCode>
<tr class="z-h40">
<td class="z-px16 z-color-gray">
<input id="rememberCode" type="checkbox" data-role="z-checkbox" data-class="${zmr_color_class}" onclick="doRememberCode(this);" <#if Validates.isNotEmpty(operatorCode)>checked</#if>>&nbsp;&nbsp;记住用户名
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<#if hasRememberPass>
<input id="rememberPass" type="checkbox" data-role="z-checkbox" data-class="${zmr_color_class}" onclick="doRememberPass(this);" <#if Validates.isNotEmpty(operatorPass)>checked</#if>/>&nbsp;&nbsp;记住密码
</#if>
</td>
</tr>
</#if>
<tr class="z-h70">
<td><button id="login" class="z-button z-xlarge z-w100p z-h50 zi-px20 ${zmr_color_class}" onclick="doLogin()">&nbsp;&nbsp;</button></td>
</tr>
</table>
</div>
</div>
<div class="footer">${zmr_copyright}</div>
</body>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

@@ -0,0 +1,149 @@
<!DOCTYPE html>
<html>
<head>
<title>${context.getContextName()}</title>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
${Styles.src(zhiqim.css)}
${Scripts.src(zhiqim.js)}
${Styles.src(zmr_theme.css)}
${Scripts.src(zmr_theme.js)}
</head>
<body>
${Htmls.toCallFrame()}
<!--顶部导航 -->
<div class="topnav">
<div id="logo" class="logo z-pointer z-text-left ${sessionUser.getSidebarClass()}" onclick="Z.L.href('${context.getRootPath("/"+zhiqim_manager+"/main.htm")}');">${context.getAttribute("name")}</div>
<div class="topnavleft">
<div class="bar z-w60 z-text-center z-pointer" onclick="Zmr.sidebar();"><i class="z-font z-list z-px22"></i></div>
${zhiqim_manager_topnav_left_defined()}
</div>
<div class="topnavright">
${zhiqim_manager_topnav_right_defined()}
<#if ZmrOrgDao.getOrgList(request, sessionUser.getOperatorCode()).size() gt 1>
<div class="nav z-text-center z-pointer z-pd-l20 z-pd-r20" style="max-width:200px;" onclick="Zmr.selectOrgDialog();">${ZmrOrgDao.getOrgName(request, sessionUser.getSelectedOrgId())}</div>
</#if>
<div class="nav z-w100 z-text-center z-pointer" onclick="Z.L.reload();">刷新</div>
<div class="nav z-w100 z-text-center z-pointer" onclick="Z.L.confirm('${context.getRootPath("/"+zhiqim_manager+"/logout.htm")}', '确实要退出吗?');">退出系统</div>
</div>
</div>
<!--容器开始 -->
<div class="container">
<!--边导航开始-->
<div id="sidebar" class="${sessionUser.getSidebarClass()}">
<!--顶导航-->
<#var topMenuCode = sessionUser.getSelectedTopMenuCode(request, designatedPath)/>
<ul class="sidebar-top">
<li class="avatar<#if topMenuCode == null> active</#if>" onclick="Z.L.href('${context.getRootPath("/"+zhiqim_manager+"/profile.htm")}');"><img class="z-bd-rd50p z-w40 z-h40" src="${sessionUser.getAvatar50()}"></li>
<#for topMenu : sessionUser.getTopMenuList()>
<#var childMenuFirst = sessionUser.getChildMenuFirst(topMenu.getMenuCode())/>
<#if childMenuFirst != null || Validates.isNotEmptyBlank(topMenu.getMenuUrl())>
<li onclick="Z.L.href('${context.getRootPath(childMenuFirst==null?topMenu.getMenuUrl():childMenuFirst.getMenuUrl())}');" <#if topMenu.getMenuCode() == topMenuCode>class="active"</#if>><i class="z-font ${topMenu.getMenuIcon()}"></i><br>#{topMenu.getMenuNameAbbr()}</li>
</#if>
</#for>
</ul>
<#var childMenuCode = sessionUser.getSelectedSecondMenuCode(request, designatedPath)/>
<#if childMenuCode != null && topMenuCode != null>
<#var topMenu = sessionUser.getMenu(topMenuCode)/>
<#if sessionUser.hasChildMenu(topMenu.getMenuCode())>
<!--子导航-->
<div class="sidebar-child">
<div class="info z-float-left z-text-left z-bd-b" >
<span class="z-relative z-px18 z-bold" style="line-height:32px;"><i class="z-font ${topMenu.getMenuIcon()}"></i><span class="z-mg-l10">#{topMenu.getMenuName()}</span></span><br>
</div>
<ul>
<#for childMenu : sessionUser.getChildMenuList(topMenu.getMenuCode())>
<li onclick="Z.L.href('${context.getRootPath(childMenu.getMenuUrl())}');" class="<#if childMenu.getMenuCode() == childMenuCode> active</#if>"><i class="z-font z-px16 ${childMenu.getMenuIcon()}"></i><span class="z-mg-l5">#{childMenu.getMenuName()}</span></p>
</#for>
</ul>
</div>
</#if>
</#if>
<!--边导航结束-->
</div>
<!--主体-->
<#var mainbodyLeft = 260/>
<#if topMenuCode == null || !sessionUser.hasChildMenu(topMenuCode)>
<#var mainbodyLeft = 60/>
</#if>
<#if !sessionUser.hasSidebar()>
<div id="mainbody" class="mainbody" value="${mainbodyLeft}" style="margin-left:0;">
<#elseif topMenuCode == null || !sessionUser.hasChildMenu(topMenuCode)>
<div id="mainbody" class="mainbody" value="${mainbodyLeft}" style="margin-left:60px;">
<#else>
<div id="mainbody" class="mainbody" value="${mainbodyLeft}">
</#if>
<#include include/>
</div>
<!--容器结束 -->
</div>
<#if Validates.isNotEmptyBlank(sessionUser.getOperator().getInitialPassword()) && sessionUser.getOperator().getInitialPassword().equals(sessionUser.getOperator().getOperatorPass())>
<script>
function doModifyPass(form)
{
var ajax = new Z.Ajax();
ajax.setContextPath("${context.getContextPath()}");
ajax.setClassName("ZmrProfilePresenter");
ajax.setMethodName("doModifyPass");
ajax.setParamForm(form);
ajax.setFailureAlert();
ajax.setSuccessAlertReloadParent("修改成功");
ajax.execute();
}
var dialog = new Z.Dialog();
dialog.title = '<span style="font-weight:bold">初始密码需要修改</span>';
dialog.text = '<div id="dialog_content"></div>';
dialog.width = 650;
dialog.height = 280;
dialog.fixed = true;
dialog.close = function ()
{//关闭
dialog.remove();
dialog = null;
}
dialog.execute();
dialog.$background.remove();//去边框
var text = `
<form>
<input type="text" class="z-hidden-fixed">
<input type="password" class="z-hidden-fixed">
<table class="z-table z-mg-t10 z-mg-b10">
<tr class="z-h60">
<td width="80" class="zi-pd-l10">旧&ensp;密&ensp;码:</td>
<td width="303"><input name="oldPassword" type="password" class="z-input z-w300 ${zmr_color_class}" maxlength="16" autocomplete="off"></td>
<td width="10" class="z-px14 z-text-red zi-pd-t6">*</td>
<td width="*" class="zi-pd-r10 z-px14 z-color-999">请输入原始密码</td>
</tr>
<tr class="z-h60">
<td class="zi-pd-l10">新&ensp;密&ensp;码:</td>
<td><input name="newPassword" type="password" class="z-input z-w300 ${zmr_color_class}" maxlength="16" autocomplete="off"></td>
<td class="z-px14 z-text-red zi-pd-t6">*</td>
<td class="zi-pd-r10 z-px12 z-color-999">6-16位密码,大写字母、小写字母、数字和特殊字符必须四选三,特殊字符支持</span><span class="z-px12 z-color-999 z-samp">.\`_~!@#$%</span></td>
</tr>
<tr class="z-h60">
<td class="zi-pd-l10">确认密码:</td>
<td><input name="newPassword2" type="password" class="z-input z-w300 ${zmr_color_class}" maxlength="16" autocomplete="off"></td>
<td class="z-px14 z-text-red zi-pd-t6">*</td>
<td class="zi-pd-r10 z-px14 z-color-999">再次输入新密码</td>
</tr>
</table>
<div class="z-absolute z-b0 z-l0 z-w100p z-h80 z-pd20 z-text-center z-bg-gray">
<button type="button" class="z-button z-large z-w100 ${zmr_color_class}" onclick="doModifyPass(this.form);">提交</button>
</div>
</form>
`;
Z("#dialog_content").htmlc(text);
dialog.innerAlert = false;
dialog.submit = function(){
}
document.getElementsByClassName("z-font z-error")[0].remove();
</script>
</#if>
</body>
</html>
@@ -0,0 +1,98 @@
@charset "utf-8";
/* ZhiqimUI */
.z-input{color:#333;}
/* global */
body{color:#333;background-color:#fff;}
body,table,td,div{font-size:14px;line-height:120%;}
a,a:visited{color:#333;text-decoration:none;cursor:pointer;}
a:active,a:hover{color:#1e7eec;text-decoration:none;}
a.blue,a.blue:visited{color:#0066cc;text-decoration:none;cursor:pointer;}
a.blue:active,a.blue:hover{color:#0066cc;text-decoration:underline;}
/* topnav */
.topnav {position:relative;width:100%;min-width:680px; color: #fff;background-color:#00a2eb;height:55px;z-index:99;}
.topnav .logo {float:left;width:260px;height:55px;padding:0 10px;overflow:hidden;font-size:28px;line-height:55px;background-color:#008bd2;word-break:break-all;word-wrap:break-word;}
.topnav .topnavleft {float:left;height:55px;}
.topnav .topnavleft .bar {float:left;height:55px;line-height:55px;}
.topnav .topnavleft .first {border-left:1px solid #008bd2;}
.topnav .topnavleft .nav, .topnav .topnavleft .nav-only {float:left;height:55px;line-height:55px;border-right:1px solid #008bd2;}
.topnav .topnavleft .nav:hover{background-color:#008bd2; color:#fff;}
.topnav .topnavright {float:right;height:55px;}
.topnav .topnavright .nav, .topnav .topnavright .nav-only {float:left;height:55px;line-height:55px;border-left:1px solid #008bd2;}
.topnav .topnavright .nav:hover {background-color:#008bd2; color:#fff;}
/* container */
.container {position:relative;width:100%;height:100%; min-height:1000px;overflow:hidden;background-color:#fff;}
.sidebar-top{position:absolute;top:0;left:0;float:left;width:60px;height:100%;overflow:hidden; background-color:#333;z-index:20;}
.sidebar-top li{position:relative;float:left;width:60px;height:70px;display:inline-block;text-align:center;color:#fff;padding:13px 0;line-height:22px;}
.sidebar-top li:hover{background-color:#414750;cursor:pointer;}
.sidebar-top li.active{background-color:#5c5c5c;}
.sidebar-top li i{font-size:22px;}
.sidebar-top .avatar{width: 100%;text-align:center;padding:16px 0;cursor:pointer;}
.sidebar-child{position:absolute;top:0;left:60px;float:left;width:200px;min-height:800px;height:100%;overflow:hidden; background-color:#f2f2f2;border-right:1px solid #d8dce5;z-index:20;}
.sidebar-child li{position:relative;float:left;width:200px; height:40px;line-height:40px;color:#333; padding-left:25px; background-color:#f2f2f2;cursor:pointer;}
.sidebar-child li a{color:#333;}
.sidebar-child li .z-arrow>span{border-color:#eff6fc transparent transparent;}
.sidebar-child li:hover{background-color:#f2f1ed;color:#008bd2;}
.sidebar-child li.active{background-color:#e4e3df;color:#008bd2;}
.sidebar-child li:hover>.z-arrow>span{border-color:#333 transparent transparent;}
.sidebar-child li.active>.z-arrow>span{border-color:#333 transparent transparent;}
.sidebar-child .info{position:relative;width:100%;padding:25px;}
.ueseroperate{position:relative;width:100%;overflow:hidden;padding-top:15px;min-height:200px; padding-left:25px;border-top:1px solid #e5e5e5;}
.ueseroperate .operatemenu{position:relative;cursor: pointer;color: #999;height:40px;line-height:40px;}
.ueseroperate .operatemenu:hover{color:#333;}
/* iframenav */
.iframenav{position:relative;height:40px;line-height:40px;}
/* [iframenav翻页] */
.iframenav-prev,.iframenav-next{position:absolute;top:0;width:50px;height:39px;z-index:1;background:#fff;cursor:pointer;padding:0 22px;text-align:center;line-height:39px;}
.iframenav-prev:hover,.iframenav-next:hover{background-color:#f5f5f5;}
.iframenav-prev{left:0;border-right:1px solid #d3d3d3;}
.iframenav-next{right:100px;border-left:1px solid #d3d3d3;}
.iframenav-prev .z-font,.iframenav-next .z-font{color:#999;margin-left:-8px;}
/* [iframenav控制] */
.iframenav-ctrl{position:absolute;top:0;right:0;}
.iframenav-ctrl-title{position:absolute;top:0;right:0;width:100px;height:39px;z-index:1;border-left:1px solid #d3d3d3;text-align:center;line-height:39px;color:#666;background:#fff;cursor:pointer;}
.iframenav-ctrl-title:hover{background-color:#f5f5f5;}
.iframenav-ctrl-title .z-font{color:#999;margin-left:6px;font-size:10px;}
.iframenav-ctrl-wrap{position:absolute;top:39px;right:0;display:none;width:150px;height:130px;z-index:2;background-color:#fff;border:1px solid #d3d3d3;}
.iframenav-ctrl-wrap ul{padding:10px 0;}
.iframenav-ctrl-wrap ul+ul{border-top:1px solid #ccc;}
.iframenav-ctrl-wrap li{padding:0 25px;line-height:30px;cursor:pointer;}
.iframenav-ctrl-wrap li:hover{background:#f1f1f1;}
/* [iframenav选项卡] */
.iframenav-tab-wrap{height:39px;margin:0 150px 0 50px;overflow:hidden;position:relative;}
.iframenav-tab-list{position:absolute;left:0;top:0;height:39px;background-color:#fff;overflow:hidden;}
.iframenav-tab-item{position:relative;float:left;line-height:39px;border-right:1px solid #d3d3d3;padding:0 35px 0 20px;background:#fff;color:#666;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}
.iframenav-tab-item.active{background-color:#d4d8db;}
.iframenav-tab-item:hover{color:#222;}
.iframenav-tab-item:first-child{padding-right:23px;}
.iframenav-tab-item .z-font{position:absolute;top:2px;width:25px;line-height:39px;color:#666;font-size:12px;cursor:pointer;text-align:center;}
.iframenav-tab-item .z-error{right:0;padding-right:5px;}
.iframenav-tab-item .z-error:hover{color:#f00;}
/* [iframenav内容页] */
.iframenav-cont{}
.iframenav-cont-item{width:100%;height:100%;display:none;}
.iframenav-cont-item.active{display:block;}
.iframenav-cont-item > iframe{width:100%;height:100%;border:0;margin:0;padding:0;}
/* mainbody */
.mainbody{margin-left:260px;}
.mainbody .content{position:relative;float:left;width:100%;padding:30px;}
/* footer */
.footer {position: absolute !important;bottom:50px;width:100%;z-index:99;}
.footer-wrap {position:relative;line-height:20px;text-align:left;color:#999;padding:25px;font-size:12px;}
@@ -0,0 +1,108 @@
/*
* 版权所有 (C) 2015 知启蒙(ZHIQIM) 保留所有权利。
*
* 指定登记&发行网站: https://www.zhiqim.com/ 欢迎加盟知启蒙,[编程有你,知启蒙一路随行]。
*
* 本文采用《知启蒙许可证》,除非符合许可证,否则不可使该文件!
* 1、您可以免费使用、修改、合并、出版发行和分发,再授权软件、软件副本及衍生软件;
* 2、您用于商业用途时,必须在原作者指定的登记网站进行实名登记;
* 3、您在使用、修改、合并、出版发行和分发时,必须包含版权声明、许可声明,及保留原作者的著作权、商标和专利等知识产权;
* 4、您在互联网、移动互联网等大众网络下发行和分发再授权软件、软件副本及衍生软件时,必须在原作者指定的发行网站进行发行和分发;
* 5、您可以在以下链接获取一个完整的许可证副本。
*
* 许可证链接:http://zhiqim.org/licenses/LICENSE.htm
*
* 除非法律需要或书面同意,软件由原始码方式提供,无任何明示或暗示的保证和条件。详见完整许可证的权限和限制。
*/
+(function(Z)
{//BEGIN
/**************************************************/
//定义全局的对象,便于所有的页面调用
/**************************************************/
var Zmr = window.Zmr = {};
Zmr.selectOrgDialog = function()
{//弹出组织选择框
var dialog = new Z.Dialog();
dialog.title = "选择组织";
dialog.url = "orgSelector.htm";
dialog.width = 392;
dialog.height = 423;
dialog.fixed = true;
dialog.scroll = true;
dialog.execute();
};
Zmr.sidebar = function()
{//打开&关闭边导航
var $sidebar = Z("#sidebar");
if ($sidebar.isHide())
{
$sidebar.show();
Z("#logo").show();
Z("#mainbody").css("margin-left", Z("#mainbody").val());
}
else
{
$sidebar.hide();
Z("#logo").hide();
Z("#mainbody").css("margin-left", 0);
}
Z.ajax().setContextPath(Zmr.contextPath)
.setClassName("sessionUser").setMethodName("setSidebar").addParam(!$sidebar.isHide())
.execute();
};
Zmr.calcMainbodyHeight = function()
{//计算主体高度
var height = Z(document).clientHeight()-55;//55为topnav的高度
Z("#container").css("height", height);
Z("#mainbody").css("height", height-40);//40为iframenav高度
};
Zmr.treeExpand = function(code)
{//树菜单展开和关闭
var $menu = Z("#menu-"+code);
var $ico = Z("#ico-"+code);
if (!$menu.isHide())
{
$menu.hide();
if ($ico.hasClass("z-mlastnode"))
$ico.removeClass("z-mlastnode").addClass("z-plastnode");
else
$ico.removeClass("z-mnode").addClass("z-pnode");
}
else
{
$menu.show();
if ($ico.hasClass("z-plastnode"))
$ico.removeClass("z-plastnode").addClass("z-mlastnode");
else
$ico.removeClass("z-pnode").addClass("z-mnode");
}
};
Zmr.doClickTopMenu = function(elem, menuCode, hasChild)
{//点击顶级栏目
Z(elem).addClass("active").siblings("li").removeClass("active");
Z("#sidebar-child").find("p").removeClass("active");
if (elem == Z.D.id("menu-avatar") || !hasChild)
{
Z("#sidebar-child").hide();
Z("#mainbody").css("margin-left", 60).val(60);
}
else
{
Z("#sidebar-child").children("div").hide();
Z("#sidebar-child-"+menuCode).show();
Z("#sidebar-child").show();
Z("#mainbody").css("margin-left", 260).val(260);
}
};
//END
})(zhiqim);
@@ -0,0 +1,61 @@
<#--变量定义-->
<#var zmr_theme.css = context.getRootPath("/ztmpl/zhiqim_manager/"+themeMain+"/concise_2019010101.css")/>
<#var zmr_theme.js = context.getRootPath("/ztmpl/zhiqim_manager/"+themeMain+"/concise_2019010101.js")/>
<#var zmr_color_class = "z-blue"/>
<#var zmr_sidebar_width = 260/>
<#var zmr_topnav_height = 55/>
<#var zmr_breadcrumb_height = 40/>
<#var zmr_title_bgcolor = "#efefef"/>
<#var zmr_thead_bgcolor = "#efefef"/>
<#var zmr_tr_odd_bgcolor = "#f2faff"/>
<#var zmr_tr_even_bgcolor = "#ffffff"/>
<#var zmr_tr_over_bgcolor = "#f2faff"/>
<#var zmr_tfoot_bgcolor = "#ffffff"/>
<#--面包屑 -->
<#function zhiqim_manager_breadcrumb_name(name)>
<#if !ZmrParamDao.isThemeFrame(context)>
<div class="breadcrumb z-h40 z-lh40 z-bg-white z-bd-b">
<span class="z-pd-l20">${name}</span>
</div>
</#if>
</#function>
<#--面包屑一级栏目 -->
<#function zhiqim_manager_breadcrumb(name)>
<#if !ZmrParamDao.isThemeFrame(context)>
<div class="breadcrumb z-h40 z-lh40 z-bg-white z-bd-b">
<span class="z-pd-l20">当前位置:<a href="${context.getRootPath(ZmlContexts.parseZmlContent(request, ZmrParamDao.getMainIndexUrl(context)))}">首页</a>&nbsp;&nbsp;&nbsp;>>&nbsp;&nbsp;&nbsp;<span style="color:#078ce9;">${name}</span></span>
</div>
</#if>
</#function>
<#--面包屑二级栏目 -->
<#function zhiqim_manager_breadcrumb_parent(parentUrl, parentName, name)>
<#if !ZmrParamDao.isThemeFrame(context)>
<div class="breadcrumb z-h40 z-lh40 z-bg-white z-bd-b">
<span class="z-pd-l20">当前位置:<a href="${context.getRootPath(ZmlContexts.parseZmlContent(request, ZmrParamDao.getMainIndexUrl(context)))}">首页</a>&nbsp;&nbsp;&nbsp;>>&nbsp;&nbsp;&nbsp;<a href="${parentUrl}">${parentName}</a>&nbsp;&nbsp;&nbsp;>>&nbsp;&nbsp;&nbsp;<span style="color:#078ce9;">${name}</span></span>
</div>
</#if>
</#function>
<#--面包屑三级栏目 -->
<#function zhiqim_manager_breadcrumb_parent_last(parentUrl, parentName, lastUrl, lastName, name)>
<#if !ZmrParamDao.isThemeFrame(context)>
<div class="breadcrumb z-h40 z-lh40 z-bg-white z-bd-b">
<span class="z-pd-l20">当前位置:<a href="${context.getRootPath(ZmlContexts.parseZmlContent(request, ZmrParamDao.getMainIndexUrl(context)))}">首页</a>&nbsp;&nbsp;&nbsp;>>&nbsp;&nbsp;&nbsp;<a href="${parentUrl}">${parentName}</a>&nbsp;&nbsp;&nbsp;>>&nbsp;&nbsp;&nbsp;<a href="${lastUrl}">${lastName}</a>&nbsp;&nbsp;&nbsp;>>&nbsp;&nbsp;&nbsp;<span style="color:#078ce9;">${name}</span></span>
</div>
</#if>
</#function>
<#--显示记录分页-->
<#function zhiqim_manager_paging(result, link)>
<table class="z-table z-bordered zi-bd-t-none z-bg-white">
<tr class="z-h50">
<td><div class="z-float-right z-mg-r10">${PagingStd.toHtmlLink(result, link)}</div></td>
</tr>
</table>
</#function>
<#--显示记录分页JS-->
<#function zhiqim_manager_paging_jsMethod(result, jsMethod)>
<table class="z-table z-bordered zi-bd-t-none z-bg-white">
<tr class="z-h50">
<td><div class="z-float-right z-mg-r10">${PagingStd.toHtmlClick(result, jsMethod)}</div></td>
</tr>
</table>
</#function>
@@ -0,0 +1,35 @@
<#var zmr_sidebar_width = 0/>
<#var zmr_topnav_height = 0/>
<!DOCTYPE html>
<html>
<head>
<title>${context.getContextName()}</title>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
${Styles.src(zhiqim.css)}
${Scripts.src(zhiqim.js)}
${Styles.src(zmr_theme.css)}
${Scripts.src(zmr_theme.js)}
<#if request.getPathInContext() == "/"+zhiqim_manager+"/param.htm" || request.getPathInContext() == "/"+zhiqim_manager+"/themeMain.htm">
<script>
if (top.location == self.location)
{//从其他主题切换过来的时候
top.location.href = "${context.getRootPath("/"+zhiqim_manager+"/main.htm")}";
}
</script>
</#if>
</head>
<body>
${Htmls.toCallFrame()}
<div class="container">
<div class="mainbody" style="margin-left:0;padding-top:0;">
<!-- 主体开始 -->
<#include include/>
<!-- 主体结束 -->
</div>
</div>
</body>
</html>
@@ -0,0 +1,181 @@
<!DOCTYPE html>
<html>
<head>
<title>${context.getContextName()}</title>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
${Styles.src(zhiqim.css)}
${Scripts.src(zhiqim.js)}
${Styles.src(zmr_theme.css)}
${Scripts.src(zmr_theme.js)}
${Scripts.src(zhiqim_iframenav.js)}
${Styles.htmlOverflowHidden()}
<script>
Zmr.contextPath = "${context.getContextPath()}";
Zin.contextPath = "${context.getContextPath()}";
Z.onload(Zmr.calcMainbodyHeight);
Z(window).resize(Zmr.calcMainbodyHeight);
Z(window).resize(Zin.setTranslateForShowActive);
<#if !sessionUser.isWelcomeUrl()>
Z.onload(function()
{
var $elem = Z("#sidebar [data-url]");
if ($elem.length > 0)
{//存在指定主页,主动打开
Zin.doClickChildMenu($elem[0], $elem.attr("data-url"));
}
});
</#if>
</script>
</head>
<body>
<!--顶部导航 -->
<div class="topnav">
<div id="logo" class="logo z-pointer z-text-left ${sessionUser.getSidebarClass()}" onclick="Zin.selectIframeTab('menu_index');">${context.getAttribute("name")}</div>
<div class="topnavleft">
<div class="bar z-w60 z-text-center z-pointer" onclick="Zmr.sidebar();"><i class="z-font z-list z-px22"></i></div>
${zhiqim_manager_topnav_left_defined()}
</div>
<div class="topnavright">
${zhiqim_manager_topnav_right_defined()}
<#if ZmrOrgDao.getOrgList(request, sessionUser.getOperatorCode()).size() gt 1>
<div class="nav z-text-center z-pointer z-pd-l20 z-pd-r20" style="max-width:200px;" onclick="Zmr.selectOrgDialog();">${ZmrOrgDao.getOrgName(request, sessionUser.getSelectedOrgId())}</div>
</#if>
<div class="nav z-w100 z-text-center z-pointer" onclick="Z.L.reload(mainFrame);">刷新</div>
<div class="nav z-w100 z-text-center z-pointer" onclick="Z.L.confirm('${context.getRootPath("/"+zhiqim_manager+"/logout.htm")}', '确实要退出吗?');">退出系统</div>
</div>
</div>
<!--容器开始 -->
<div id="container" class="container">
<!--边导航开始-->
<div id="sidebar" class="${sessionUser.getSidebarClass()}">
<!--顶导航-->
<#var topMenuCode = sessionUser.getSelectedTopMenuCodeOrFirstMenuCode(request, sessionUser.getMainUrl())/>
<ul class="sidebar-top">
<li class="avatar" id="menu-avatar" data-text="个人中心" onclick="Zin.doClickChildMenu(this, '${context.getRootPath("/"+zhiqim_manager+"/profile.htm")}');"><img class="z-bd-rd50p z-w40 z-h40" src="${sessionUser.getAvatar50()}"></li>
<#for topMenu : sessionUser.getTopMenuList()>
<#var childMenuFirst = sessionUser.getChildMenuFirst(topMenu.getMenuCode())/>
<#if childMenuFirst != null || Validates.isNotEmptyBlank(topMenu.getMenuUrl())>
<li onclick="Zmr.doClickTopMenu(this, '${topMenu.getMenuCode()}', ${childMenuFirst != null});" <#if topMenu.getMenuCode() == topMenuCode>class="active"</#if>><i class="z-font ${topMenu.getMenuIcon()}"></i><br>#{topMenu.getMenuNameAbbr()}</li>
</#if>
</#for>
</ul>
<!--子导航-->
<div id="sidebar-child" style="display: <#if topMenuCode == null || !sessionUser.hasChildMenu(topMenuCode)>none<#else>block</#if>;">
<#for topMenu : sessionUser.getTopMenuList()>
<!--${topMenu.getMenuName()} - 子栏目列表-->
<div class="sidebar-child" id="sidebar-child-${topMenu.getMenuCode()}" style="display: <#if topMenu.getMenuCode() == topMenuCode>block<#else>none</#if>;">
<div class="info z-float-left z-text-left z-bd-b" >
<span class="z-relative z-px18 z-bold" style="line-height:32px;"><i class="z-font ${topMenu.getMenuIcon()}"></i><span class="z-mg-l10">#{topMenu.getMenuName()}</span></span><br>
</div>
<ul>
<#for childMenu : sessionUser.getChildMenuList(topMenu.getMenuCode())>
<li onclick="Zin.doClickChildMenu(this, '${context.getRootPath(childMenu.getMenuUrl())}');" <#if context.getRootPath(childMenu.getMenuUrl()) == sessionUser.getMainUrl()>class="active" data-url="${context.getRootPath(childMenu.getMenuUrl())}"</#if>><i class="z-font z-px16 ${childMenu.getMenuIcon()}"></i><span class="z-mg-l5">#{childMenu.getMenuName()}</span></p>
</#for>
</ul>
</div>
</#for>
</div>
<!--边导航结束-->
</div>
<!-- 框架导航 -->
<div class="iframenav z-h40 z-lh40 z-bg-white z-bd-b" style="margin-left:<#if sessionUser.hasSidebar()>260px<#else>0</#if>">
<div class="iframenav-prev" onclick="Zin.turnIframeTab(false);"><i class="z-font z-arrow-left"></i><i class="z-font z-arrow-left"></i></div>
<div class="iframenav-tab-wrap">
<ul class="iframenav-tab-list">
<li class="iframenav-tab-item active" id="tab_menu_index" onclick="Zin.selectIframeTabEvent(event);"><span>首页</span></li>
</ul>
</div>
<div class="iframenav-next" onclick="Zin.turnIframeTab(true);"><i class="z-font z-arrow-right"></i><i class="z-font z-arrow-right"></i></div>
<div class="iframenav-ctrl">
<div class="iframenav-ctrl-title" onclick="Zin.toggleIframeCtrlWrap();">关闭操作<i class="z-font z-arrow-down"></i></div>
<div class="iframenav-ctrl-wrap">
<ul>
<li class="iframenav-ctrl-item" onclick="Zin.selectIframeTabActive();">定位当前选项卡</li>
</ul>
<ul>
<li class="iframenav-ctrl-item" onclick="Zin.closeIframeTabAll();">关闭全部选项卡</li>
<li class="iframenav-ctrl-item" onclick="Zin.closeIframeTabOther();">关闭其他选项卡</li>
</ul>
</div>
</div>
</div>
<!--框架内容-->
<div id="mainbody" class="mainbody iframenav-cont z-h100p" style="margin-left:<#if sessionUser.hasSidebar()>260px<#else>0</#if>">
<div id="iframe_menu_index" class="iframenav-cont-item active">
<iframe id="mainFrame" name="mainFrame" frameborder="0" scrolling="auto" src="welcome.htm"></iframe>
</div>
</div>
<!--容器结束 -->
</div>
<#if Validates.isNotEmptyBlank(sessionUser.getOperator().getInitialPassword()) && sessionUser.getOperator().getInitialPassword().equals(sessionUser.getOperator().getOperatorPass())>
<script>
function doModifyPass(form)
{
var ajax = new Z.Ajax();
ajax.setContextPath("${context.getContextPath()}");
ajax.setClassName("ZmrProfilePresenter");
ajax.setMethodName("doModifyPass");
ajax.setParamForm(form);
ajax.setFailureAlert();
ajax.setSuccessAlertReloadParent("修改成功");
ajax.execute();
}
var dialog = new Z.Dialog();
dialog.title = '<span style="font-weight:bold">初始密码需要修改</span>';
dialog.text = '<div id="dialog_content"></div>';
dialog.width = 650;
dialog.height = 280;
dialog.fixed = true;
dialog.close = function ()
{//关闭
dialog.remove();
dialog = null;
}
dialog.execute();
dialog.$background.remove();//去边框
var text = `
<form>
<input type="text" class="z-hidden-fixed">
<input type="password" class="z-hidden-fixed">
<table class="z-table z-mg-t10 z-mg-b10">
<tr class="z-h60">
<td width="80" class="zi-pd-l10">旧&ensp;密&ensp;码:</td>
<td width="303"><input name="oldPassword" type="password" class="z-input z-w300 ${zmr_color_class}" maxlength="16" autocomplete="off"></td>
<td width="10" class="z-px14 z-text-red zi-pd-t6">*</td>
<td width="*" class="zi-pd-r10 z-px14 z-color-999">请输入原始密码</td>
</tr>
<tr class="z-h60">
<td class="zi-pd-l10">新&ensp;密&ensp;码:</td>
<td><input name="newPassword" type="password" class="z-input z-w300 ${zmr_color_class}" maxlength="16" autocomplete="off"></td>
<td class="z-px14 z-text-red zi-pd-t6">*</td>
<td class="zi-pd-r10 z-px12 z-color-999">6-16位密码,大写字母、小写字母、数字和特殊字符必须四选三,特殊字符支持</span><span class="z-px12 z-color-999 z-samp">.\`_~!@#$%</span></td>
</tr>
<tr class="z-h60">
<td class="zi-pd-l10">确认密码:</td>
<td><input name="newPassword2" type="password" class="z-input z-w300 ${zmr_color_class}" maxlength="16" autocomplete="off"></td>
<td class="z-px14 z-text-red zi-pd-t6">*</td>
<td class="zi-pd-r10 z-px14 z-color-999">再次输入新密码</td>
</tr>
</table>
<div class="z-absolute z-b0 z-l0 z-w100p z-h80 z-pd20 z-text-center z-bg-gray">
<button type="button" class="z-button z-large z-w100 ${zmr_color_class}" onclick="doModifyPass(this.form);">提交</button>
</div>
</form>
`;
Z("#dialog_content").htmlc(text);
dialog.innerAlert = false;
dialog.submit = function(){
}
document.getElementsByClassName("z-font z-error")[0].remove();
</script>
</#if>
</body>
</html>
@@ -0,0 +1,179 @@
<!DOCTYPE html>
<html>
<head>
<title>${context.getContextName()}</title>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
${Styles.src(zhiqim.css)}
${Scripts.src(zhiqim.js)}
${Scripts.src(jsencrypt.js)}
${Styles.htmlOverflowHidden()}
<style>
body{color:#333;background-color:#fff;background-image: url(ztmpl/zhiqim_manager/index_bg_01.jpg);background-repeat: no-repeat;background-size:100%;}
body,table,td,div{font-size:14px;line-height:120%;}
a,a:visited{color:#333;text-decoration:none;cursor:pointer;}
a:active,a:hover{color:#1e7eec;text-decoration:none;}
.header{position:fixed;width:100%;height:40px;line-height:40px;background-color:#000; background:rgba(0,0,0,0.2); filter:alpha(opacity=20);}
.footer{position:fixed;bottom:0px; width:100%;height:40px;background:rgba(255,255,255,0.2);line-height:40px;text-align:center;color:#fff;}
.login{background-image: url(ztmpl/zhiqim_manager/02_concise/index_bg_center.png);background-repeat:repeat-y; width:825px;}
.input{background-color:#fff;color:#333;font-size:20px;letter-spacing:1px;border:2px solid #c3c3c3;border-radius:5px;height:45px;line-height:45px;text-indent:10px;font-family:Consolas,"微软雅黑";}
.input:focus{border-color:#8c8c8c;}
.input.verificationCode{letter-spacing:4px;}
</style>
<script>
Z.onload(function()
{//默认焦点
if (Z("#operatorCode").val() == "")
Z("#operatorCode").focus();
else if (Z("#operatorPass").val() == "")
Z("#operatorPass").focus();
else if (Z("#verificationCode").val() == null)
Z("#verificationCode").focus();
else
Z("#operatorCode").focus();
Z(document).keydown(function(e)
{
if (Z.E.key(e) != Z.E.KEY.ENTER)
return;
if (!Z.Dialog.cache.isEmpty())
return;
doLogin();
});
});
function doRememberCode(rememberCode)
{//取消记住账号时,同时取消记住密码
if (!rememberCode.checked)
{
Z("#rememberPass")[0].checked = false;
Z("[data-id=rememberPass]").removeClass("z-active");
}
}
function doRememberPass(rememberPass)
{//记住密码时,同时记住账号
if (rememberPass.checked)
{
Z("#rememberCode")[0].checked = true;
Z("[data-id=rememberCode]").addClass("z-active");
}
}
function doLogin()
{//登陆
var operatorCode = Z("#operatorCode").val();
if (Z.V.isEmptyBlank(operatorCode))
{//用户名和密码必填
Z.failure("用户名不能为空!",function(){
Z("#operatorCode").focus();
});
return;
}
var operatorPass = Z("#operatorPass").val();
if (Z.V.isEmptyBlank(operatorPass))
{//用户名和密码必填
Z.failure("密码不能为空!",function(){
Z("#operatorPass").focus();
});
return;
}
var verificationCode = Z("#verificationCode").val();
if (Z("#verificationCode").length > 0 && verificationCode.length != 4)
{//如果有验证码框的时候,要求值必须是4位(数字在输入时控制)
Z.failure("验证码为4位数字!");
return;
}
//对密码进行RSA加密
var publicKey = "${ZmrParamDao.getPublicKey(context)}";
var encrypt = new JSEncrypt();
encrypt.setPublicKey(publicKey);
operatorPass = encrypt.encrypt(operatorPass);
var ajax = new Z.Ajax();
ajax.setContextPath("${context.getContextPath()}");
ajax.setClassName("ZmrLoginPresenter");
ajax.setMethodName("doLogin");
ajax.addParam("operatorCode", operatorCode);
ajax.addParam("operatorPass", operatorPass);
ajax.addParam("verificationCode", verificationCode);
<#if hasRememberCode>
ajax.addParam("rememberCode", Z("#rememberCode")[0].checked);
</#if>
<#if hasRememberPass>
ajax.addParam("rememberPass", Z("#rememberPass")[0].checked);
</#if>
ajax.setFailureAlertRecovery();
ajax.setSuccessLocationResponse();
ajax.setLoading("login", "正在登录...", {disabled:true,recovery:false});
ajax.execute();
}
</script>
</head>
<body>
<div class="header">
<div class="z-float-left z-w400 z-lh40 z-pd-l10 z-color-white">欢迎登录&nbsp;&nbsp;[&nbsp;${context.getContextName()}&nbsp;]</div>
<div class="z-float-right z-text-right z-w200 z-lh40 z-pd-r10"></div>
</div>
<div class="z-absolute-center-middle login" style="height:<#if hasVerificationCode && hasRememberCode>410<#elseif hasVerificationCode>360<#elseif hasRememberCode>350<#else>300</#if>px">
<table class="z-table z-h100p">
<tr>
<td width="50%" class="z-text-center"><img src="ztmpl/zhiqim_manager/index_logo_01.png"></td>
<td width="50%" valign="top" rowspan="2">
<input type="text" class="z-hidden-fixed"/>
<input type="password" class="z-hidden-fixed"/>
<table class="z-table z-mg-l30 z-h70-tr z-pd5 z-color-333">
<tr>
<td class="z-px20 z-color-333 z-mg-t10">用户登录</td>
</tr>
<tr>
<td><input id="operatorCode" class="z-w300 input" placeholder="用户名" value="#{operatorCode}" maxlength="16" spellcheck="false" autocomplete="off"></td>
</tr>
<tr>
<td><input id="operatorPass" type="password" class="z-w300 input" placeholder="密码" value="#{operatorPass}" maxlength="16" spellcheck="false" autocomplete="off"></td>
</tr>
<#if hasVerificationCode>
<tr>
<td>
<input id="verificationCode" class="z-w200 input verificationCode" placeholder="验证码" maxlength="4" data-options="type:Numeric;paste:true;" spellcheck="false" autocomplete="off">
<img class="z-pointer z-bd-rd5 z-mg-t-5" title="点击刷新验证码" onclick="this.src='service/vcode.jpg?bgColor=%231299ec&width=95&height=40&fontSize=20&yawp=true&t='+new Date().getTime();" src="service/vcode.jpg?bgColor=%231299ec&width=95&fontSize=20&height=40&yawp=true&t=${DateTimes.getDateTime17String()}">
</td>
</tr>
</#if>
<#if hasRememberCode>
<tr class="zi-h40">
<td class="z-px16 z-color-333">
<input id="rememberCode" type="checkbox" data-role="z-checkbox" data-class="z-mg-r10 ${zmr_color_class}" onclick="doRememberCode(this);" <#if Validates.isNotEmpty(operatorCode)>checked</#if>>记住用户名
<#if hasRememberPass>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input id="rememberPass" type="checkbox" data-role="z-checkbox" data-class="z-mg-r10 ${zmr_color_class}" onclick="doRememberPass(this);" <#if Validates.isNotEmpty(operatorPass)>checked</#if>/>记住密码
</#if>
</td>
</tr>
</#if>
<tr>
<td>
<button id="login" class="z-button z-w300 z-h50 zi-px20 ${zmr_color_class}" onclick="doLogin()">&nbsp;&nbsp;</button>
</td>
</tr>
</table>
</td>
</tr>
<tr class="z-h120" valign="top">
<td class="z-text-center"><img src="ztmpl/zhiqim_manager/index_slogan_01.png"/></td>
</tr>
</table>
</div>
<div class="footer">${zmr_copyright}</div>
</body>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

@@ -0,0 +1,136 @@
<!DOCTYPE html>
<html>
<head>
<title>${context.getContextName()}</title>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
${Styles.src(zhiqim.css)}
${Scripts.src(zhiqim.js)}
${Styles.src(zmr_theme.css)}
${Scripts.src(zmr_theme.js)}
</head>
<body>
${Htmls.toCallFrame()}
<!--顶部导航 -->
<div class="topnav">
<div id="logo" class="logo z-pointer z-text-left ${sessionUser.getSidebarClass()}" onclick="Z.L.href('${context.getRootPath("/"+zhiqim_manager+"/main.htm")}');">${context.getAttribute("name")}</div>
<div class="topnavleft">
<div class="bar z-w60 z-text-center z-pointer" onclick="Zmr.sidebar();"><i class="z-font z-list z-px22"></i></div>
${zhiqim_manager_topnav_left_defined()}
</div>
<div class="topnavright">
${zhiqim_manager_topnav_right_defined()}
<#if ZmrOrgDao.getOrgList(request, sessionUser.getOperatorCode()).size() gt 1>
<div class="nav z-text-center z-pointer z-pd-l20 z-pd-r20" style="max-width:200px;" onclick="Zmr.selectOrgDialog();">${ZmrOrgDao.getOrgName(request, sessionUser.getSelectedOrgId())}</div>
</#if>
<div class="nav z-w100 z-text-center z-pointer" onclick="Z.L.reload();">刷新</div>
<div class="nav z-w100 z-text-center z-pointer" onclick="Z.L.confirm('${context.getRootPath("/"+zhiqim_manager+"/logout.htm")}', '确实要退出吗?');">退出系统</div>
</div>
</div>
<!--容器开始 -->
<div id="container" class="container">
<!--侧边导航 -->
<div id="sidebar" class="sidebar ${sessionUser.getSidebarClass()}">
<!--个人中心-->
<div class="user-box">
<div class="avatar-box z-text-center">
<a href="${context.getRootPath("/"+zhiqim_manager+"/profile.htm")}" rel="nofollow">
<img class="z-bd-rd50p z-w70 z-h70" src="${sessionUser.getAvatar50()}">
</a>
</div>
<div class="z-pd-t20 z-text-center z-lh25 z-color-white">
<span class="z-px13 z-bold">${sessionUser.getOperatorName()}</span><br>
</div>
</div>
<!--栏目列表-->
<#var topMenuCode = sessionUser.getSelectedTopMenuCodeOrFirstMenuCode(request, designatedPath)/>
<#var childMenuCode = sessionUser.getSelectedSecondMenuCode(request, designatedPath)/>
<#var topMenu = sessionUser.getTopMenuFirst()/>
<ul id="${topMenu.getMenuCode()}">
<li onclick="Z.L.href('${context.getRootPath("/"+zhiqim_manager+"/main.htm")}');" <#if childMenuCode == null>class="active"</#if>><i class="z-font z-mg-r10 z-house"></i>首页</li>
<#for childMenu : sessionUser.getChildMenuList(topMenu.getMenuCode())>
<li onclick="Z.L.href('${context.getRootPath(childMenu.getMenuUrl())}');" <#if childMenu.getMenuCode() == childMenuCode>class="active"</#if>><i class="z-font z-mg-r10 ${childMenu.getMenuIcon()}"></i>#{childMenu.getMenuName()}</li>
</#for>
</ul>
</div>
<!--主体-->
<div id="mainbody" class="mainbody" style="margin-left:<#if sessionUser.hasSidebar()>200px<#else>0</#if>">
<#include include/>
</div>
<!-- 容器结束 -->
</div>
<!--脚注-->
<div class="footer">
<div class="footer-wrap">${zmr_copyright}</div>
</div>
<#if Validates.isNotEmptyBlank(sessionUser.getOperator().getInitialPassword()) && sessionUser.getOperator().getInitialPassword().equals(sessionUser.getOperator().getOperatorPass())>
<script>
function doModifyPass(form)
{
var ajax = new Z.Ajax();
ajax.setContextPath("${context.getContextPath()}");
ajax.setClassName("ZmrProfilePresenter");
ajax.setMethodName("doModifyPass");
ajax.setParamForm(form);
ajax.setFailureAlert();
ajax.setSuccessAlertReloadParent("修改成功");
ajax.execute();
}
var dialog = new Z.Dialog();
dialog.title = '<span style="font-weight:bold">初始密码需要修改</span>';
dialog.text = '<div id="dialog_content"></div>';
dialog.width = 650;
dialog.height = 280;
dialog.fixed = true;
dialog.close = function ()
{//关闭
dialog.remove();
dialog = null;
}
dialog.execute();
dialog.$background.remove();//去边框
var text = `
<form>
<input type="text" class="z-hidden-fixed">
<input type="password" class="z-hidden-fixed">
<table class="z-table z-mg-t10 z-mg-b10">
<tr class="z-h60">
<td width="80" class="zi-pd-l10">旧&ensp;密&ensp;码:</td>
<td width="303"><input name="oldPassword" type="password" class="z-input z-w300 ${zmr_color_class}" maxlength="16" autocomplete="off"></td>
<td width="10" class="z-px14 z-text-red zi-pd-t6">*</td>
<td width="*" class="zi-pd-r10 z-px14 z-color-999">请输入原始密码</td>
</tr>
<tr class="z-h60">
<td class="zi-pd-l10">新&ensp;密&ensp;码:</td>
<td><input name="newPassword" type="password" class="z-input z-w300 ${zmr_color_class}" maxlength="16" autocomplete="off"></td>
<td class="z-px14 z-text-red zi-pd-t6">*</td>
<td class="zi-pd-r10 z-px12 z-color-999">6-16位密码,大写字母、小写字母、数字和特殊字符必须四选三,特殊字符支持</span><span class="z-px12 z-color-999 z-samp">.\`_~!@#$%</span></td>
</tr>
<tr class="z-h60">
<td class="zi-pd-l10">确认密码:</td>
<td><input name="newPassword2" type="password" class="z-input z-w300 ${zmr_color_class}" maxlength="16" autocomplete="off"></td>
<td class="z-px14 z-text-red zi-pd-t6">*</td>
<td class="zi-pd-r10 z-px14 z-color-999">再次输入新密码</td>
</tr>
</table>
<div class="z-absolute z-b0 z-l0 z-w100p z-h80 z-pd20 z-text-center z-bg-gray">
<button type="button" class="z-button z-large z-w100 ${zmr_color_class}" onclick="doModifyPass(this.form);">提交</button>
</div>
</form>
`;
Z("#dialog_content").htmlc(text);
dialog.innerAlert = false;
dialog.submit = function(){
}
document.getElementsByClassName("z-font z-error")[0].remove();
</script>
</#if>
</body>
</html>
@@ -0,0 +1,61 @@
<#--变量定义-->
<#var zmr_theme.css = context.getRootPath("/ztmpl/zhiqim_manager/"+themeMain+"/elegant_2019010101.css")/>
<#var zmr_theme.js = context.getRootPath("/ztmpl/zhiqim_manager/"+themeMain+"/elegant_2019010101.js")/>
<#var zmr_color_class = "z-blue"/>
<#var zmr_sidebar_width = 200/>
<#var zmr_topnav_height = 55/>
<#var zmr_breadcrumb_height = 40/>
<#var zmr_title_bgcolor = "#f5f5f5"/>
<#var zmr_thead_bgcolor = "#f5f5f5"/>
<#var zmr_tr_odd_bgcolor = "#f6fafd"/>
<#var zmr_tr_even_bgcolor = "#ffffff"/>
<#var zmr_tr_over_bgcolor = "#f6fafd"/>
<#var zmr_tfoot_bgcolor = "#ffffff"/>
<#--面包屑 -->
<#function zhiqim_manager_breadcrumb_name(name)>
<#if !ZmrParamDao.isThemeFrame(context)>
<div class="breadcrumb z-h40 z-lh40 z-bg-white z-bd-b">
<span class="z-pd-l20">${name}</span>
</div>
</#if>
</#function>
<#--面包屑一级栏目 -->
<#function zhiqim_manager_breadcrumb(name)>
<#if !ZmrParamDao.isThemeFrame(context)>
<div class="breadcrumb z-h40 z-lh40 z-bg-white z-bd-b">
<span class="z-pd-l20">当前位置:<a href="${context.getRootPath(ZmlContexts.parseZmlContent(request, ZmrParamDao.getMainIndexUrl(context)))}">首页</a>&nbsp;&nbsp;&nbsp;>>&nbsp;&nbsp;&nbsp;<span style="color:#1e7eec;">${name}</span></span>
</div>
</#if>
</#function>
<#--面包屑二级栏目 -->
<#function zhiqim_manager_breadcrumb_parent(parentUrl, parentName, name)>
<#if !ZmrParamDao.isThemeFrame(context)>
<div class="breadcrumb z-h40 z-lh40 z-bg-white z-bd-b">
<span class="z-pd-l15">当前位置:<a href="${context.getRootPath(ZmlContexts.parseZmlContent(request, ZmrParamDao.getMainIndexUrl(context)))}">首页</a>&nbsp;&nbsp;&nbsp;>>&nbsp;&nbsp;&nbsp;<a href="${parentUrl}">${parentName}</a>&nbsp;&nbsp;&nbsp;>>&nbsp;&nbsp;&nbsp;<span style="color:#0280d4;">${name}</span></span>
</div>
</#if>
</#function>
<#--面包屑三级栏目 -->
<#function zhiqim_manager_breadcrumb_parent_last(parentUrl, parentName, lastUrl, lastName, name)>
<#if !ZmrParamDao.isThemeFrame(context)>
<div class="breadcrumb z-h40 z-lh40 z-bg-white z-bd-b">
<span class="z-pd-l15">当前位置:<a href="${context.getRootPath(ZmlContexts.parseZmlContent(request, ZmrParamDao.getMainIndexUrl(context)))}">首页</a>&nbsp;&nbsp;&nbsp;>>&nbsp;&nbsp;&nbsp;<a href="${parentUrl}">${parentName}</a>&nbsp;&nbsp;&nbsp;>>&nbsp;&nbsp;&nbsp;<a href="${lastUrl}">${lastName}</a>&nbsp;&nbsp;&nbsp;>>&nbsp;&nbsp;&nbsp;<span style="color:#0280d4;">${name}</span></span>
</div>
</#if>
</#function>
<#--显示记录分页-->
<#function zhiqim_manager_paging(result, link)>
<table class="z-table z-bordered zi-bd-t-none z-bg-white">
<tr class="z-h50">
<td><div class="z-float-right z-mg-r10">${PagingStd.toHtmlLink(result, link)}</div></td>
</tr>
</table>
</#function>
<#--显示记录分页JS-->
<#function zhiqim_manager_paging_jsMethod(result, jsMethod)>
<table class="z-table z-bordered zi-bd-t-none z-bg-white">
<tr class="z-h50">
<td><div class="z-float-right z-mg-r10">${PagingStd.toHtmlClick(result, jsMethod)}</div></td>
</tr>
</table>
</#function>
@@ -0,0 +1,102 @@
@charset "utf-8";
/* ZhiqimUI */
.z-input{color:#333;}
/* global */
body{color:#333;background-color:#fff;}
body,table,td,div{font-size:14px;line-height:120%;}
a,a:visited{color:#333;text-decoration:none;cursor:pointer;}
a:active,a:hover{color:#1e7eec;text-decoration:none;}
a.blue,a.blue:visited{color:#0066cc;text-decoration:none;cursor:pointer;}
a.blue:active,a.blue:hover{color:#0066cc;text-decoration:underline;}
/* topnav */
.topnav {position:relative;width:100%;min-width:680px;color:#fff;background-color:#00a2eb;height:55px;z-index:99;}
.topnav .logo {float:left;width:200px;height:55px;padding:0 10px;overflow:hidden;font-size:24px;line-height:55px;background-color:#008bd2;word-break:break-all;word-wrap:break-word;}
.topnav a{color: #fff;}
.topnav .topnavleft {float:left;height:55px;}
.topnav .topnavleft .bar {float:left;height:55px;line-height:55px;}
.topnav .topnavleft .first {border-left:1px solid #008bd2;}
.topnav .topnavleft .nav, .topnav .topnavleft .nav-only {float:left;height:55px;line-height:55px;border-right:1px solid #008bd2;}
.topnav .topnavleft .nav:hover{background-color:#008bd2; color:#fff;}
.topnav .topnavright {float:right;height:55px;}
.topnav .topnavright .nav, .topnav .topnavright .nav-only {float:left;height:55px;line-height:55px;border-left:1px solid #008bd2;}
.topnav .topnavright .nav:hover {background-color:#008bd2; color:#fff;}
/* container */
.container {position:relative;width:100%;height:100%; min-height:1000px;overflow:hidden;background-color:#fff;}
.sidebar {position:relative; float: left; width:201px;min-height:1000px;height:100%;margin-bottom:-9999px;padding-bottom:9999px;overflow:hidden; background-color: #48525e;border-right:1px solid #d4e1ee;}
.sidebar p{position:relative;float:left;width:200px; height:40px;line-height:40px;color:#fff; padding-left:15px; background-color:#48525e;border-bottom:1px solid #e5e5e5;cursor:pointer;}
.sidebar p a{color:#fff;}
.sidebar p .z-arrow{position:absolute;top:16px;right:10px;}
.sidebar p .z-arrow>span{border-color:#fff transparent transparent;}
.sidebar p:hover{background-color:#e3f0fc;border-top:1px #d1e6fa;border-bottom:1px #d1e6fa;}
.sidebar p.active{background-color:#e3f0fc;border-top:1px #d1e6fa;border-bottom:1px #d1e6fa;}
.sidebar p:hover>.z-arrow>span{border-color:#e3f0fc transparent transparent;}
.sidebar p.active>.z-arrow>span{border-color:#e3f0fc transparent transparent;}
.sidebar ul{position:relative;width:200px;height:auto;border-bottom:1px solid #686f78;padding-top:15px;padding-bottom:20px; overflow:hidden;}
.sidebar ul li{float:left;width:200px;height:40px;color:#fff;border-left:5px solid #48525e;background-color:#48525e;font-size:15px;line-height:40px;padding-left:25px;cursor:pointer;}
.sidebar ul li a{color:#fff;}
.sidebar ul li:hover{color:#bfc1c4;}
.sidebar ul li.active{background-color:#363c41;color:#fff;border-left:5px solid #008bd2;color:#008bd2;}
.sidebar ul li.active i{color:#008bd2;}
.sidebar .user-box {border-bottom:1px solid #686f78;padding-bottom:10px;}
.sidebar .user-box .avatar-box {position: relative;height:80px;background: #3a434c;z-index:2;}
.sidebar .user-box .avatar-box a{position: absolute;width:80px;height:80px;left:60px;bottom:-20px;}
.sidebar .user-box .avatar-box a img {border-radius: 50%;box-shadow: 0 0 0 8px #3a434c;}
.sidebar i{color:#9ba0a7;font-size:18px;}
/* iframenav */
.iframenav{position:relative;margin-left:200px;height:40px;line-height:40px;}
/* [iframenav翻页] */
.iframenav-prev,.iframenav-next{position:absolute;top:0;width:50px;height:39px;z-index:1;background:#fff;cursor:pointer;padding:0 22px;text-align:center;line-height:39px;}
.iframenav-prev:hover,.iframenav-next:hover{background-color:#f5f5f5;}
.iframenav-prev{left:0;border-right:1px solid #d3d3d3;}
.iframenav-next{right:100px;border-left:1px solid #d3d3d3;}
.iframenav-prev .z-font,.iframenav-next .z-font{color:#999;margin-left:-8px;}
/* [iframenav控制] */
.iframenav-ctrl{position:absolute;top:0;right:0;}
.iframenav-ctrl-title{position:absolute;top:0;right:0;width:100px;height:39px;z-index:1;border-left:1px solid #d3d3d3;text-align:center;line-height:39px;color:#666;background:#fff;cursor:pointer;}
.iframenav-ctrl-title:hover{background-color:#f5f5f5;}
.iframenav-ctrl-title .z-font{color:#999;margin-left:6px;font-size:10px;}
.iframenav-ctrl-wrap{position:absolute;top:39px;right:0;display:none;width:150px;height:130px;z-index:2;background-color:#fff;border:1px solid #d3d3d3;}
.iframenav-ctrl-wrap ul{padding:10px 0;}
.iframenav-ctrl-wrap ul+ul{border-top:1px solid #ccc;}
.iframenav-ctrl-wrap li{padding:0 25px;line-height:30px;cursor:pointer;}
.iframenav-ctrl-wrap li:hover{background:#f1f1f1;}
/* [iframenav选项卡] */
.iframenav-tab-wrap{height:39px;margin:0 150px 0 50px;overflow:hidden;position:relative;}
.iframenav-tab-list{position:absolute;left:0;top:0;height:39px;background-color:#fff;overflow:hidden;}
.iframenav-tab-item{position:relative;float:left;line-height:39px;border-right:1px solid #d3d3d3;padding:0 35px 0 20px;background:#fff;color:#666;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}
.iframenav-tab-item.active{background-color:#d4d8db;}
.iframenav-tab-item:hover{color:#222;}
.iframenav-tab-item:first-child{padding-right:23px;}
.iframenav-tab-item .z-font{position:absolute;top:2px;width:25px;line-height:39px;color:#666;font-size:12px;cursor:pointer;text-align:center;}
.iframenav-tab-item .z-error{right:0;padding-right:5px;}
.iframenav-tab-item .z-error:hover{color:#f00;}
/* [iframenav内容页] */
.iframenav-cont{}
.iframenav-cont-item{width:100%;height:100%;display:none;}
.iframenav-cont-item.active{display:block;}
.iframenav-cont-item > iframe{width:100%;height:100%;border:0;margin:0;padding:0;}
/* mainbody */
.mainbody{margin-left:200px;}
.mainbody .breadcrumb{position:relative;float:left;width: 100%;}
.mainbody .content{position:relative;float:left;width:100%;padding:20px;}
/* footer */
.footer {position:relative;width:100%;height:60px;display:block;overflow:hidden;background-color:#f4f4f4;border-top:1px solid #d3d3d3;z-index:99;}
.footer-wrap {position:relative;margin:0 auto;height:100%;line-height:60px;text-align: center;color:#333;}
@@ -0,0 +1,114 @@
/*
* 版权所有 (C) 2015 知启蒙(ZHIQIM) 保留所有权利。
*
* 指定登记&发行网站: https://www.zhiqim.com/ 欢迎加盟知启蒙,[编程有你,知启蒙一路随行]。
*
* 本文采用《知启蒙许可证》,除非符合许可证,否则不可使该文件!
* 1、您可以免费使用、修改、合并、出版发行和分发,再授权软件、软件副本及衍生软件;
* 2、您用于商业用途时,必须在原作者指定的登记网站进行实名登记;
* 3、您在使用、修改、合并、出版发行和分发时,必须包含版权声明、许可声明,及保留原作者的著作权、商标和专利等知识产权;
* 4、您在互联网、移动互联网等大众网络下发行和分发再授权软件、软件副本及衍生软件时,必须在原作者指定的发行网站进行发行和分发;
* 5、您可以在以下链接获取一个完整的许可证副本。
*
* 许可证链接:http://zhiqim.org/licenses/LICENSE.htm
*
* 除非法律需要或书面同意,软件由原始码方式提供,无任何明示或暗示的保证和条件。详见完整许可证的权限和限制。
*/
+(function(Z)
{//BEGIN
/**************************************************/
//定义全局的对象,便于所有的页面调用
/**************************************************/
var Zmr = window.Zmr = {};
Zmr.selectOrgDialog = function()
{//弹出组织选择框
var dialog = new Z.Dialog();
dialog.title = "选择组织";
dialog.url = "orgSelector.htm";
dialog.width = 392;
dialog.height = 423;
dialog.fixed = true;
dialog.scroll = true;
dialog.execute();
};
Zmr.sidebar = function()
{//打开&关闭边导航
var $sidebar = Z("#sidebar");
if ($sidebar.isHide())
{
$sidebar.show();
Z("#logo").show();
Z("#mainbody").css("margin-left", 201);
}
else
{
$sidebar.hide();
Z("#logo").hide();
Z("#mainbody").css("margin-left", 0);
}
Z.ajax().setContextPath(Zmr.contextPath)
.setClassName("sessionUser").setMethodName("setSidebar").addParam(!$sidebar.isHide())
.execute();
};
Zmr.calcMainbodyHeight = function()
{//计算主体高度
var height = Z(document).clientHeight()-55;//-55为topnav的高度
Z("#container").css("height", height);
Z("#mainbody").css("height", height-40);//40为iframenav高度
}
Zmr.treeExpand = function(code)
{//树菜单展开和关闭
var $menu = Z("#menu-"+code);
var $ico = Z("#ico-"+code);
if (!$menu.isHide())
{
$menu.hide();
if ($ico.hasClass("z-mlastnode"))
$ico.removeClass("z-mlastnode").addClass("z-plastnode");
else
$ico.removeClass("z-mnode").addClass("z-pnode");
}
else
{
$menu.show();
if ($ico.hasClass("z-plastnode"))
$ico.removeClass("z-plastnode").addClass("z-mlastnode");
else
$ico.removeClass("z-pnode").addClass("z-mnode");
}
};
Zmr.addTopMenuClick = function()
{//增加顶级栏目点击事件
Zmr.doClickTopMenuUp = false;
Zmr.doClickTopMenuDw = false;
Z(".sidebar p").click(function()
{
if (Zmr.doClickTopMenuUp || Zmr.doClickTopMenuDw)
return;
Zmr.doClickTopMenuUp = true;Zmr.doClickTopMenuDw = true;
Z(this).next("ul").slideToggle(200, function(){Zmr.doClickTopMenuDw = false;})
.siblings("ul").slideUp(200, function(){Zmr.doClickTopMenuUp = false;});
});
};
/**************************************************/
//定义初始化滑动菜单
/**************************************************/
Z.onload(function()
{//菜单隐藏展开
Zmr.addTopMenuClick();
});
//END
})(zhiqim);
@@ -0,0 +1,35 @@
<#var zmr_sidebar_width = 0/>
<#var zmr_topnav_height = 0/>
<!DOCTYPE html>
<html>
<head>
<title>${context.getContextName()}</title>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
${Styles.src(zhiqim.css)}
${Scripts.src(zhiqim.js)}
${Styles.src(zmr_theme.css)}
${Scripts.src(zmr_theme.js)}
<#if request.getPathInContext() == "/"+zhiqim_manager+"/param.htm" || request.getPathInContext() == "/"+zhiqim_manager+"/themeMain.htm">
<script>
if (top.location == self.location)
{//从其他主题切换过来的时候
top.location.href = "${context.getRootPath("/"+zhiqim_manager+"/main.htm")}";
}
</script>
</#if>
</head>
<body>
${Htmls.toCallFrame()}
<div class="container">
<div class="mainbody" style="margin-left:0;">
<!-- 主体开始 -->
<#include include/>
<!-- 主体结束 -->
</div>
</div>
</body>
</html>
@@ -0,0 +1,174 @@
<!DOCTYPE html>
<html>
<head>
<title>${context.getContextName()}</title>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
${Styles.src(zhiqim.css)}
${Scripts.src(zhiqim.js)}
${Styles.src(zmr_theme.css)}
${Scripts.src(zmr_theme.js)}
${Scripts.src(zhiqim_iframenav.js)}
${Styles.htmlOverflowHidden()}
<script>
Zmr.contextPath = "${context.getContextPath()}";
Zin.contextPath = "${context.getContextPath()}";
Z.onload(Zmr.calcMainbodyHeight);
Z(window).resize(Zmr.calcMainbodyHeight);
Z(window).resize(Zin.setTranslateForShowActive);
<#if !sessionUser.isWelcomeUrl()>
Z.onload(function()
{
var $elem = Z("#sidebar [data-url]");
if ($elem.length > 0)
{//存在指定主页,主动打开
Zin.doClickChildMenu($elem[0], $elem.attr("data-url"));
}
});
</#if>
</script>
</head>
<body>
<!--顶部导航 -->
<div class="topnav">
<div id="logo" class="logo z-pointer z-text-left ${sessionUser.getSidebarClass()}" onclick="Zin.selectIframeTab('menu_index');">${context.getAttribute("name")}</div>
<div class="topnavleft">
<div class="bar z-w60 z-text-center z-pointer" onclick="Zin.sidebar();"><i class="z-font z-list z-px22"></i></div>
${zhiqim_manager_topnav_left_defined()}
</div>
<div class="topnavright">
${zhiqim_manager_topnav_right_defined()}
<#if ZmrOrgDao.getOrgList(request, sessionUser.getOperatorCode()).size() gt 1>
<div class="nav z-text-center z-pointer z-pd-l20 z-pd-r20" style="max-width:200px;" onclick="Zmr.selectOrgDialog();">${ZmrOrgDao.getOrgName(request, sessionUser.getSelectedOrgId())}</div>
</#if>
<div class="nav z-w100 z-text-center z-pointer" onclick="Zin.refreshIframeTabActive();">刷新</div>
<div class="nav z-w100 z-text-center z-pointer" onclick="Z.L.confirm('${context.getRootPath("/"+zhiqim_manager+"/logout.htm")}', '确实要退出吗?');">退出系统</div>
</div>
</div>
<!--容器开始 -->
<div id="container" class="container">
<!--侧边导航 -->
<div id="sidebar" class="sidebar ${sessionUser.getSidebarClass()}">
<!-- 个人中心 -->
<div class="user-box">
<div class="avatar-box z-text-center">
<a href="javascript:void(0);" onclick="Zin.doClickChildMenu(this, '${context.getRootPath("/"+zhiqim_manager+"/profile.htm")}');" data-text="个人中心" rel="nofollow">
<img class="z-bd-rd50p z-w70 z-h70" src="${sessionUser.getAvatar50()}">
</a>
</div>
<div class="z-pd-t20 z-text-center z-lh25 z-color-white">
<span class="z-px14 z-bold">${sessionUser.getOperatorName()}</span><br>
</div>
</div>
<!-- 栏目列表 -->
<#var topMenuCode = sessionUser.getSelectedTopMenuCodeOrFirstMenuCode(request, sessionUser.getMainUrl())/>
<#var childMenuCode = sessionUser.getSelectedSecondMenuCode(request, sessionUser.getMainUrl())/>
<#var topMenu = sessionUser.getTopMenuFirst()/>
<ul id="${topMenu.getMenuCode()}">
<li id="menu_index" onclick="Zin.selectIframeTab('menu_index');" <#if childMenuCode == null>class="active"</#if>><i class="z-font z-mg-r10 z-house"></i>首页</li>
<#for childMenu : sessionUser.getChildMenuList(topMenu.getMenuCode())>
<li onclick="Zin.doClickChildMenu(this, '${context.getRootPath(childMenu.getMenuUrl())}');" <#if context.getRootPath(childMenu.getMenuUrl()) == sessionUser.getMainUrl()>class="active" data-url="${context.getRootPath(childMenu.getMenuUrl())}"</#if>><i class="z-font z-mg-r10 ${childMenu.getMenuIcon()}"></i>#{childMenu.getMenuName()}</li>
</#for>
</ul>
</div>
<!-- 框架导航 -->
<div class="iframenav z-h40 z-lh40 z-bg-white z-bd-b" style="margin-left:<#if sessionUser.hasSidebar()>200px<#else>0</#if>">
<div class="iframenav-prev" onclick="Zin.turnIframeTab(false);"><i class="z-font z-arrow-left"></i><i class="z-font z-arrow-left"></i></div>
<div class="iframenav-tab-wrap">
<ul class="iframenav-tab-list">
<li class="iframenav-tab-item active" id="tab_menu_index" onclick="Zin.selectIframeTabEvent(event);"><span>首页</span></li>
</ul>
</div>
<div class="iframenav-next" onclick="Zin.turnIframeTab(true);"><i class="z-font z-arrow-right"></i><i class="z-font z-arrow-right"></i></div>
<div class="iframenav-ctrl">
<div class="iframenav-ctrl-title" onclick="Zin.toggleIframeCtrlWrap();">关闭操作<i class="z-font z-arrow-down"></i></div>
<div class="iframenav-ctrl-wrap">
<ul>
<li class="iframenav-ctrl-item" onclick="Zin.selectIframeTabActive();">定位当前选项卡</li>
</ul>
<ul>
<li class="iframenav-ctrl-item" onclick="Zin.closeIframeTabAll();">关闭全部选项卡</li>
<li class="iframenav-ctrl-item" onclick="Zin.closeIframeTabOther();">关闭其他选项卡</li>
</ul>
</div>
</div>
</div>
<!--框架内容-->
<div id="mainbody" class="mainbody iframenav-cont z-h100p" style="margin-left:<#if sessionUser.hasSidebar()>200px<#else>0</#if>">
<div id="iframe_menu_index" class="iframenav-cont-item active">
<iframe id="mainFrame" name="mainFrame" frameborder="0" scrolling="auto" src="welcome.htm"></iframe>
</div>
</div>
<!--容器结束 -->
</div>
<#if Validates.isNotEmptyBlank(sessionUser.getOperator().getInitialPassword()) && sessionUser.getOperator().getInitialPassword().equals(sessionUser.getOperator().getOperatorPass())>
<script>
function doModifyPass(form)
{
var ajax = new Z.Ajax();
ajax.setContextPath("${context.getContextPath()}");
ajax.setClassName("ZmrProfilePresenter");
ajax.setMethodName("doModifyPass");
ajax.setParamForm(form);
ajax.setFailureAlert();
ajax.setSuccessAlertReloadParent("修改成功");
ajax.execute();
}
var dialog = new Z.Dialog();
dialog.title = '<span style="font-weight:bold">初始密码需要修改</span>';
dialog.text = '<div id="dialog_content"></div>';
dialog.width = 650;
dialog.height = 280;
dialog.fixed = true;
dialog.close = function ()
{//关闭
dialog.remove();
dialog = null;
}
dialog.execute();
dialog.$background.remove();//去边框
var text = `
<form>
<input type="text" class="z-hidden-fixed">
<input type="password" class="z-hidden-fixed">
<table class="z-table z-mg-t10 z-mg-b10">
<tr class="z-h60">
<td width="80" class="zi-pd-l10">旧&ensp;密&ensp;码:</td>
<td width="303"><input name="oldPassword" type="password" class="z-input z-w300 ${zmr_color_class}" maxlength="16" autocomplete="off"></td>
<td width="10" class="z-px14 z-text-red zi-pd-t6">*</td>
<td width="*" class="zi-pd-r10 z-px14 z-color-999">请输入原始密码</td>
</tr>
<tr class="z-h60">
<td class="zi-pd-l10">新&ensp;密&ensp;码:</td>
<td><input name="newPassword" type="password" class="z-input z-w300 ${zmr_color_class}" maxlength="16" autocomplete="off"></td>
<td class="z-px14 z-text-red zi-pd-t6">*</td>
<td class="zi-pd-r10 z-px12 z-color-999">6-16位密码,大写字母、小写字母、数字和特殊字符必须四选三,特殊字符支持</span><span class="z-px12 z-color-999 z-samp">.\`_~!@#$%</span></td>
</tr>
<tr class="z-h60">
<td class="zi-pd-l10">确认密码:</td>
<td><input name="newPassword2" type="password" class="z-input z-w300 ${zmr_color_class}" maxlength="16" autocomplete="off"></td>
<td class="z-px14 z-text-red zi-pd-t6">*</td>
<td class="zi-pd-r10 z-px14 z-color-999">再次输入新密码</td>
</tr>
</table>
<div class="z-absolute z-b0 z-l0 z-w100p z-h80 z-pd20 z-text-center z-bg-gray">
<button type="button" class="z-button z-large z-w100 ${zmr_color_class}" onclick="doModifyPass(this.form);">提交</button>
</div>
</form>
`;
Z("#dialog_content").htmlc(text);
dialog.innerAlert = false;
dialog.submit = function(){
}
document.getElementsByClassName("z-font z-error")[0].remove();
</script>
</#if>
</body>
</html>
@@ -0,0 +1,174 @@
<!DOCTYPE html>
<html>
<head>
<title>${context.getContextName()}</title>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
${Styles.src(zhiqim.css)}
${Scripts.src(zhiqim.js)}
${Scripts.src(jsencrypt.js)}
${Styles.htmlOverflowHidden()}
${Scripts.src("/ztmpl/zhiqim_manager/zhiqim_webgl_three.js")}
<style>
body{color:#333;background-color:#1d72c0;}
body,table,td,div{font-size:14px;line-height:120%;}
a,a:visited{color:#333;text-decoration:none;cursor:pointer;}
a:active,a:hover{color:#1e7eec;text-decoration:none;}
.header{position:fixed;width:100%;height:40px;line-height:40px;background:rgba(255,255,255,0.2);z-index:20;}
.footer{position:fixed;bottom:0px; width:100%;height:40px;background:rgba(255,255,255,0.2);line-height:40px;text-align:center;color:#fff;}
.login{width:520px;padding:20px;background:rgba(255,255,255,0.6);}
.input{color:#333;font-size:18px;border:2px solid #fffafa;border-radius:5px;height:50px;line-height:50px;text-indent:10px;font-family:Consolas,"微软雅黑";}
.input.verificationCode{letter-spacing:4px;}
</style>
<script>
Z.onload(function()
{//默认焦点
if (Z("#operatorCode").val() == "")
Z("#operatorCode").focus();
else if (Z("#operatorPass").val() == "")
Z("#operatorPass").focus();
else if (Z("#verificationCode").val() == null)
Z("#verificationCode").focus();
else
Z("#operatorCode").focus();
var three = new Z.WebGLThree();
three.threePath = "/ztmpl/zhiqim_manager/three.js";
three.elem = "z-webgl-canvas";
three.execute();
Z(document).keydown(function(e)
{
if (Z.E.key(e) != Z.E.KEY.ENTER)
return;
if (!Z.Dialog.cache.isEmpty())
return;
doLogin();
});
});
function doRememberCode(rememberCode)
{//取消记住账号时,同时取消记住密码
if (!rememberCode.checked)
{
Z("#rememberPass")[0].checked = false;
Z("[data-id=rememberPass]").removeClass("z-active");
}
}
function doRememberPass(rememberPass)
{//记住密码时,同时记住账号
if (rememberPass.checked)
{
Z("#rememberCode")[0].checked = true;
Z("[data-id=rememberCode]").addClass("z-active");
}
}
function doLogin()
{//登陆
var operatorCode = Z("#operatorCode").val();
if (Z.V.isEmptyBlank(operatorCode))
{//用户名和密码必填
Z.failure("用户名不能为空!",function(){
Z("#operatorCode").focus();
});
return;
}
var operatorPass = Z("#operatorPass").val();
if (Z.V.isEmptyBlank(operatorPass))
{//用户名和密码必填
Z.failure("密码不能为空!",function(){
Z("#operatorPass").focus();
});
return;
}
var verificationCode = Z("#verificationCode").val();
if (Z("#verificationCode").length > 0 && verificationCode.length != 4)
{//如果有验证码框的时候,要求值必须是4位(数字在输入时控制)
Z.failure("验证码为4位数字!");
return;
}
//对密码进行RSA加密
var publicKey = "${ZmrParamDao.getPublicKey(context)}";
var encrypt = new JSEncrypt();
encrypt.setPublicKey(publicKey);
operatorPass = encrypt.encrypt(operatorPass);
var ajax = new Z.Ajax();
ajax.setContextPath("${context.getContextPath()}");
ajax.setClassName("ZmrLoginPresenter");
ajax.setMethodName("doLogin");
ajax.addParam("operatorCode", operatorCode);
ajax.addParam("operatorPass", operatorPass);
ajax.addParam("verificationCode", verificationCode);
<#if hasRememberCode>
ajax.addParam("rememberCode", Z("#rememberCode")[0].checked);
</#if>
<#if hasRememberPass>
ajax.addParam("rememberPass", Z("#rememberPass")[0].checked);
</#if>
ajax.setFailureAlertRecovery();
ajax.setSuccessLocationResponse();
ajax.setLoading("login", "正在登录...", {disabled:true,recovery:false});
ajax.execute();
}
</script>
</head>
<body>
<div class="header">
<div class="z-float-left z-w400 z-lh40 z-pd-l10 z-color-white">欢迎登录&nbsp;&nbsp;[&nbsp;${context.getContextName()}&nbsp;]</div>
<div class="z-float-right z-text-right z-w200 z-lh40 z-pd-r10"></div>
</div>
<div class="z-absolute-center-middle z-bd-rd10 login" style="height:<#if hasVerificationCode && hasRememberCode>420<#elseif hasVerificationCode>390<#elseif hasRememberCode>350<#else>320</#if>px">
<input type="text" class="z-hidden-fixed"/>
<input type="password" class="z-hidden-fixed"/>
<div class="z-px24 z-color-333 z-pd-b10 z-pd-l20">&nbsp;&nbsp;<i class="z-font z-customer"></i>&nbsp;用户登录</div>
<div style="padding:25px 40px 20px 30px;">
<table class="z-table z-h100p z-h70-tr z-pd5">
<tr>
<td><input id="operatorCode" class="z-w400 input" placeholder="用户名" value="#{operatorCode}" maxlength="16" spellcheck="false" autocomplete="off"></td>
</tr>
<tr>
<td><input id="operatorPass" type="password" class="z-w100p input" placeholder="密码" value="#{operatorPass}" maxlength="16" spellcheck="false" autocomplete="off"></td>
</tr>
<#if hasVerificationCode>
<tr>
<td>
<input id="verificationCode" type="text" class="input verificationCode" style="width:270px" placeholder="验证码" maxlength="4" data-options="type:Numeric;paste:true;" spellcheck="false" autocomplete="off">
<img class="z-pointer z-bd-rd5 z-mg-t-5" title="点击刷新验证码" onclick="this.src='service/vcode.jpg?bgColor=%231299ec&width=120&height=50&fontSize=20&yawp=true&t='+new Date().getTime();" src="service/vcode.jpg?bgColor=%231299ec&width=120&height=50&fontSize=20&yawp=true&t=${DateTimes.getDateTime17String()}">
</td>
</tr>
</#if>
<#if hasRememberCode>
<tr class="zi-h40">
<td class="z-px16 z-color-333">
<input id="rememberCode" type="checkbox" data-role="z-checkbox" data-class="z-mg-r10 ${zmr_color_class}" onclick="doRememberCode(this);" <#if Validates.isNotEmpty(operatorCode)>checked</#if>>记住用户名
<#if hasRememberPass>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input id="rememberPass" type="checkbox" data-role="z-checkbox" data-class="z-mg-r10 ${zmr_color_class}" onclick="doRememberPass(this);" <#if Validates.isNotEmpty(operatorPass)>checked</#if>/>记住密码
</#if>
</td>
</tr>
</#if>
<tr>
<td><button id="login" class="z-button z-xlarge z-w100p z-h50 zi-px20 ${zmr_color_class}" onclick="doLogin()">&nbsp;&nbsp;</button></td>
</tr>
</table>
</div>
</div>
<div class="footer">${zmr_copyright}</div>
<div id="z-webgl-canvas" class="z-absolute z-w100p z-h100p" style="z-index:-1;"></div>
</body>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

@@ -0,0 +1,138 @@
<!DOCTYPE html>
<html>
<head>
<title>${context.getContextName()}</title>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
${Styles.src(zhiqim.css)}
${Scripts.src(zhiqim.js)}
${Styles.src(zmr_theme.css)}
${Scripts.src(zmr_theme.js)}
</head>
<body>
${Htmls.toCallFrame()}
<!--顶部导航 -->
<div class="topnav">
<div id="logo" class="logo z-pointer z-text-left ${sessionUser.getSidebarClass()}" onclick="Z.L.href('${context.getRootPath("/"+zhiqim_manager+"/main.htm")}');">${context.getAttribute("name")}</div>
<div class="topnavleft">
<div class="bar z-w60 z-text-center z-pointer" onclick="Zmr.sidebar();"><i class="z-font z-list z-px22"></i></div>
${zhiqim_manager_topnav_left_defined()}
</div>
<div class="topnavright">
${zhiqim_manager_topnav_right_defined()}
<#if ZmrOrgDao.getOrgList(request, sessionUser.getOperatorCode()).size() gt 1>
<div class="nav z-text-center z-pointer z-pd-l20 z-pd-r20" style="max-width:200px;" onclick="Zmr.selectOrgDialog();">${ZmrOrgDao.getOrgName(request, sessionUser.getSelectedOrgId())}</div>
</#if>
<div class="nav z-w100 z-text-center z-pointer" onclick="Z.L.reload();">刷新</div>
<div class="nav z-w100 z-text-center z-pointer" onclick="Z.L.confirm('${context.getRootPath("/"+zhiqim_manager+"/logout.htm")}', '确实要退出吗?');">退出系统</div>
</div>
</div>
<!--容器 -->
<div id="container" class="container">
<!--侧边导航 -->
<div id="sidebar" class="sidebar ${sessionUser.getSidebarClass()}">
<!--个人中心-->
<div class="z-h80 z-pd-t15 z-pd-l15 z-bd-b">
<div class="z-float-left z-w50 z-h50 z-mg-r10"><img class="z-bd-rd50p z-bd z-pd3 z-bg-white z-w50 z-h50" src="${sessionUser.getAvatar50()}"></div>
<div class="z-float-left z-lh25">
<span class="z-px14 z-bold">${sessionUser.getOperatorName()}</span><br>
<span class="z-color-666"><a href="${context.getRootPath("/"+zhiqim_manager+"/profile.htm")}">个人中心</a></span>
</div>
</div>
<!--栏目列表-->
<#var topMenuCode = sessionUser.getSelectedTopMenuCodeOrFirstMenuCode(request, designatedPath)/>
<#var childMenuCode = sessionUser.getSelectedSecondMenuCode(request, designatedPath)/>
<#for topMenu : sessionUser.getTopMenuList()>
<#if sessionUser.hasChildMenu(topMenu.getMenuCode())>
<p><i class="z-font z-px18 ${topMenu.getMenuIcon()}"></i><span class="z-mg-l5">#{topMenu.getMenuName()}</span><i class="z-arrow z-px5"><span></span></i></p>
<ul id="${topMenu.getMenuCode()}" style="display: <#if topMenu.getMenuCode() == topMenuCode>block<#else>none</#if>;">
<#for childMenu : sessionUser.getChildMenuList(topMenu.getMenuCode())>
<li onclick="Z.L.href('${context.getRootPath(ZmlContexts.parseZmlContent(request, childMenu.getMenuUrl()))}');" <#if childMenu.getMenuCode() == childMenuCode>class="active"</#if>>#{childMenu.getMenuName()}</li>
</#for>
</ul>
<#elseif Validates.isNotEmptyBlank(topMenu.getMenuUrl())>
<p onclick="Z.L.href('${context.getRootPath(ZmlContexts.parseZmlContent(request, topMenu.getMenuUrl()))}');"><i class="z-font z-px18 z-mg-r5 ${topMenu.getMenuIcon()}"></i>#{topMenu.getMenuName()}</p>
</#if>
</#for>
</div>
<!--主体-->
<div id="mainbody" class="mainbody" style="margin-left:<#if sessionUser.hasSidebar()>200px<#else>0</#if>">
<#include include/>
</div>
<!-- 容器结束 -->
</div>
<!--脚注-->
<div class="footer">
<div class="footer-wrap">${zmr_copyright}</div>
</div>
<#if Validates.isNotEmptyBlank(sessionUser.getOperator().getInitialPassword()) && sessionUser.getOperator().getInitialPassword().equals(sessionUser.getOperator().getOperatorPass())>
<script>
function doModifyPass(form)
{
var ajax = new Z.Ajax();
ajax.setContextPath("${context.getContextPath()}");
ajax.setClassName("ZmrProfilePresenter");
ajax.setMethodName("doModifyPass");
ajax.setParamForm(form);
ajax.setFailureAlert();
ajax.setSuccessAlertReloadParent("修改成功");
ajax.execute();
}
var dialog = new Z.Dialog();
dialog.title = '<span style="font-weight:bold">初始密码需要修改</span>';
dialog.text = '<div id="dialog_content"></div>';
dialog.width = 650;
dialog.height = 280;
dialog.fixed = true;
dialog.close = function ()
{//关闭
dialog.remove();
dialog = null;
}
dialog.execute();
dialog.$background.remove();//去边框
var text = `
<form>
<input type="text" class="z-hidden-fixed">
<input type="password" class="z-hidden-fixed">
<table class="z-table z-mg-t10 z-mg-b10">
<tr class="z-h60">
<td width="80" class="zi-pd-l10">旧&ensp;密&ensp;码:</td>
<td width="303"><input name="oldPassword" type="password" class="z-input z-w300 ${zmr_color_class}" maxlength="16" autocomplete="off"></td>
<td width="10" class="z-px14 z-text-red zi-pd-t6">*</td>
<td width="*" class="zi-pd-r10 z-px14 z-color-999">请输入原始密码</td>
</tr>
<tr class="z-h60">
<td class="zi-pd-l10">新&ensp;密&ensp;码:</td>
<td><input name="newPassword" type="password" class="z-input z-w300 ${zmr_color_class}" maxlength="16" autocomplete="off"></td>
<td class="z-px14 z-text-red zi-pd-t6">*</td>
<td class="zi-pd-r10 z-px12 z-color-999">6-16位密码,大写字母、小写字母、数字和特殊字符必须四选三,特殊字符支持</span><span class="z-px12 z-color-999 z-samp">.\`_~!@#$%</span></td>
</tr>
<tr class="z-h60">
<td class="zi-pd-l10">确认密码:</td>
<td><input name="newPassword2" type="password" class="z-input z-w300 ${zmr_color_class}" maxlength="16" autocomplete="off"></td>
<td class="z-px14 z-text-red zi-pd-t6">*</td>
<td class="zi-pd-r10 z-px14 z-color-999">再次输入新密码</td>
</tr>
</table>
<div class="z-absolute z-b0 z-l0 z-w100p z-h80 z-pd20 z-text-center z-bg-gray">
<button type="button" class="z-button z-large z-w100 ${zmr_color_class}" onclick="doModifyPass(this.form);">提交</button>
</div>
</form>
`;
Z("#dialog_content").htmlc(text);
dialog.innerAlert = false;
dialog.submit = function(){
}
document.getElementsByClassName("z-font z-error")[0].remove();
</script>
</#if>
</body>
</html>
@@ -0,0 +1,53 @@
<#--变量定义-->
<#var zmr_theme.css = context.getRootPath("/ztmpl/zhiqim_manager/"+themeMain+"/fresh_2019010101.css")/>
<#var zmr_theme.js = context.getRootPath("/ztmpl/zhiqim_manager/"+themeMain+"/fresh_2019010101.js")/>
<#var zmr_color_class = "z-cyan"/>
<#var zmr_sidebar_width = 200/>
<#var zmr_topnav_height = 55/>
<#var zmr_breadcrumb_height = 40/>
<#var zmr_title_bgcolor = "#f5f5f5"/>
<#var zmr_thead_bgcolor = "#f5f5f5"/>
<#var zmr_tr_odd_bgcolor = "#f6ffff"/>
<#var zmr_tr_even_bgcolor = "#ffffff"/>
<#var zmr_tr_over_bgcolor = "#f6ffff"/>
<#var zmr_tfoot_bgcolor = "#ffffff"/>
<#--面包屑 -->
<#function zhiqim_manager_breadcrumb_name(name)>
<div class="breadcrumb z-h40 z-lh40 z-bg-white z-bd-b">
<span class="z-pd-l20">${name}</span>
</div>
</#function>
<#--面包屑一级栏目 -->
<#function zhiqim_manager_breadcrumb(name)>
<div class="breadcrumb z-h40 z-lh40 z-bg-white z-bd-b">
<i class="z-font z-house z-pd-l20 z-px18"></i><span class="z-mg-l3"><a href="${context.getRootPath(ZmlContexts.parseZmlContent(request, ZmrParamDao.getMainIndexUrl(context)))}">首页</a>&nbsp;&nbsp;&nbsp;>>&nbsp;&nbsp;&nbsp;<span style="color:#4bacc6;">${name}</span></span>
</div>
</#function>
<#--面包屑二级栏目 -->
<#function zhiqim_manager_breadcrumb_parent(parentUrl, parentName, name)>
<div class="breadcrumb z-h40 z-lh40 z-bg-white z-bd-b">
<i class="z-font z-house z-pd-l15 z-px18"></i><span class="z-mg-l3"><a href="${context.getRootPath(ZmlContexts.parseZmlContent(request, ZmrParamDao.getMainIndexUrl(context)))}">首页</a>&nbsp;&nbsp;&nbsp;>>&nbsp;&nbsp;&nbsp;<a href="${parentUrl}">${parentName}</a>&nbsp;&nbsp;&nbsp;>>&nbsp;&nbsp;&nbsp;<span style="color:#4bacc6;">${name}</span></span>
</div>
</#function>
<#--面包屑三级栏目 -->
<#function zhiqim_manager_breadcrumb_parent_last(parentUrl, parentName, lastUrl, lastName, name)>
<div class="breadcrumb z-h40 z-lh40 z-bg-white z-bd-b">
<i class="z-font z-house z-pd-l15 z-px18"></i><span class="z-mg-l3"><a href="${context.getRootPath(ZmlContexts.parseZmlContent(request, ZmrParamDao.getMainIndexUrl(context)))}">首页</a>&nbsp;&nbsp;&nbsp;>>&nbsp;&nbsp;&nbsp;<a href="${parentUrl}">${parentName}</a>&nbsp;&nbsp;&nbsp;>>&nbsp;&nbsp;&nbsp;<a href="${lastUrl}">${lastName}</a>&nbsp;&nbsp;&nbsp;>>&nbsp;&nbsp;&nbsp;<span style="color:#4bacc6;">${name}</span></span>
</div>
</#function>
<#--显示记录分页-->
<#function zhiqim_manager_paging(result, link)>
<table class="z-table z-bordered zi-bd-t-none z-bg-white">
<tr class="z-h50">
<td><div class="z-float-right z-mg-r10">${PagingStd.toHtmlLink(result, link)}</div></td>
</tr>
</table>
</#function>
<#--显示记录分页JS-->
<#function zhiqim_manager_paging_jsMethod(result, jsMethod)>
<table class="z-table z-bordered zi-bd-t-none z-bg-white">
<tr class="z-h40">
<td><div class="z-float-right z-mg-r10">${PagingStd.toHtmlClick(result, jsMethod)}</div></td>
</tr>
</table>
</#function>
@@ -0,0 +1,55 @@
@charset "utf-8";
/* ZhiqimUI */
.z-input{color:#333;}
/* global */
body{color:#333;background-color:#fff;}
body,table,td,div{font-size:14px;line-height:120%;}
a,a:visited{color:#333;text-decoration:none;cursor:pointer;}
a:active,a:hover{color:#00ba8b;text-decoration:none;}
a.blue,a.blue:visited{color:#0066cc;text-decoration:none;cursor:pointer;}
a.blue:active,a.blue:hover{color:#0066cc;text-decoration:underline;}
/* topnav */
.topnav {position:relative;width:100%;min-width:680px;color:#fff;background-color:#01adae;height:55px;z-index:99;}
.topnav .logo {float:left;width:200px;height:55px;padding:0 10px;overflow:hidden;font-size:24px;line-height:55px;background-color:#01a2a3;word-break:break-all;word-wrap:break-word;}
.topnav a{color: #fff;}
.topnav .topnavleft {float:left;line-height:55px;}
.topnav .topnavleft .bar {float:left;height:55px;line-height:55px;}
.topnav .topnavleft .first {border-left:1px solid #01a2a3;}
.topnav .topnavleft .nav, .topnav .topnavleft .nav-only {float:left;height:55px;line-height:55px;border-right:1px solid #01a2a3;}
.topnav .topnavleft .nav:hover{background-color:#01a2a3; color:#fff;}
.topnav .topnavright {float:right;height:55px;}
.topnav .topnavright .nav, .topnav .topnavright .nav-only {float:left;height:55px;line-height:55px;border-left:1px solid #01a2a3;}
.topnav .topnavright .nav:hover {background-color:#01a2a3; color:#fff;}
/* container */
.container {position:relative;width:100%;height:100%; min-height:1000px;overflow:hidden;}
.sidebar {position:relative; float: left; width:200px;min-height:1000px;height:100%;margin-bottom:-9999px;padding-bottom:9999px;overflow:hidden; background-color: #f2f2f2; border-right:1px solid #d8dce5;}
.sidebar p{position:relative;float:left;width:200px; height:40px;line-height:40px;color:#333; padding-left:15px; border-bottom:1px solid #e5e5e5;cursor:pointer;}
.sidebar p a{color:#333;}
.sidebar p .z-arrow{position:absolute;top:16px;right:10px;}
.sidebar p .z-arrow>span{border-color:#f2f2f2 transparent transparent;}
.sidebar p:hover{background-color:#fafafa;border-bottom:1px solid #e5e5e5;}
.sidebar p.active{background-color:#fafafa;border-bottom:1px solid #e5e5e5;}
.sidebar p:hover>.z-arrow>span{border-color:#fafafa transparent transparent;}
.sidebar p.active>.z-arrow>span{border-color:#fafafa transparent transparent;}
.sidebar ul{position:relative;width:200px;height:auto;overflow:hidden;}
.sidebar ul li{float:left;width:200px;height:40px;background-color:#fff;color:#333; line-height:40px;padding-left:35px;border-bottom:1px solid #e5e5e5;border-left:3px solid transparent;cursor:pointer;}
.sidebar ul li a{color:#333;}
.sidebar ul li:hover{background-color:#01adae;border-left:3px solid #ffa000;color:#fff;}
.sidebar ul li.active{background-color:#fff;border-left:3px solid #01adae;color:#01adae;}
/* mainbody */
.mainbody{margin-left:200px;}
.mainbody .breadcrumb{position:relative;float:left;width: 100%;}
.mainbody .content{position:relative;float:left;width:100%;padding:20px;}
/* footer */
.footer {position:relative;width:100%;height:60px;display:block;overflow:hidden;background-color:#f4f4f4;border-top:1px solid #d3d3d3;z-index:99;}
.footer-wrap {position:relative;margin:0 auto;height:100%;line-height:60px;text-align:center;color:#333;}
@@ -0,0 +1,120 @@
/*
* 版权所有 (C) 2015 知启蒙(ZHIQIM) 保留所有权利。
*
* 指定登记&发行网站: https://www.zhiqim.com/ 欢迎加盟知启蒙,[编程有你,知启蒙一路随行]。
*
* 本文采用《知启蒙许可证》,除非符合许可证,否则不可使该文件!
* 1、您可以免费使用、修改、合并、出版发行和分发,再授权软件、软件副本及衍生软件;
* 2、您用于商业用途时,必须在原作者指定的登记网站进行实名登记;
* 3、您在使用、修改、合并、出版发行和分发时,必须包含版权声明、许可声明,及保留原作者的著作权、商标和专利等知识产权;
* 4、您在互联网、移动互联网等大众网络下发行和分发再授权软件、软件副本及衍生软件时,必须在原作者指定的发行网站进行发行和分发;
* 5、您可以在以下链接获取一个完整的许可证副本。
*
* 许可证链接:http://zhiqim.org/licenses/LICENSE.htm
*
* 除非法律需要或书面同意,软件由原始码方式提供,无任何明示或暗示的保证和条件。详见完整许可证的权限和限制。
*/
+(function(Z)
{//BEGIN
/**************************************************/
//定义全局的对象,便于所有的页面调用
/**************************************************/
var Zmr = window.Zmr = {};
Zmr.selectOrgDialog = function()
{//弹出组织选择框
var dialog = new Z.Dialog();
dialog.title = "选择组织";
dialog.url = "orgSelector.htm";
dialog.width = 392;
dialog.height = 423;
dialog.fixed = true;
dialog.scroll = true;
dialog.execute();
};
Zmr.sidebar = function()
{//打开&关闭边导航
var $sidebar = Z("#sidebar");
if ($sidebar.isHide())
{
$sidebar.show();
Z("#logo").show();
Z("#mainbody").css("margin-left", 200);
}
else
{
$sidebar.hide();
Z("#logo").hide();
Z("#mainbody").css("margin-left", 0);
}
Z.ajax().setContextPath(Zmr.contextPath)
.setClassName("sessionUser").setMethodName("setSidebar").addParam(!$sidebar.isHide())
.execute();
};
Zmr.addTopMenuClick = function()
{//增加顶级栏目点击事件
Zmr.doClickTopMenuUp = false;
Zmr.doClickTopMenuDw = false;
Z(".sidebar p").click(function()
{
if (Zmr.doClickTopMenuUp || Zmr.doClickTopMenuDw)
return;
Zmr.doClickTopMenuUp = true;Zmr.doClickTopMenuDw = true;
Z(this).next("ul").slideToggle(200, function(){Zmr.doClickTopMenuDw = false;})
.siblings("ul").slideUp(200, function(){Zmr.doClickTopMenuUp = false;});
});
};
Zmr.doClickChildMenu = function(elem, menuUrl)
{//点击二级栏目
Z(elem).parent().parent().find("li").removeClass("active");
Z(elem).addClass("active");
Z.L.href(menuUrl, window.mainFrame);
};
Zmr.calcMainbodyHeight = function()
{//计算主体高度
var height = Z(document).clientHeight()-55;//-55为topnav的高度
Z("#container").css("height", height);
Z("#mainbody").css("height", height);
}
Zmr.treeExpand = function(code)
{//树菜单展开和关闭
var $menu = Z("#menu-"+code);
var $ico = Z("#ico-"+code);
if (!$menu.isHide())
{
$menu.hide();
if ($ico.hasClass("z-mlastnode"))
$ico.removeClass("z-mlastnode").addClass("z-plastnode");
else
$ico.removeClass("z-mnode").addClass("z-pnode");
}
else
{
$menu.show();
if ($ico.hasClass("z-plastnode"))
$ico.removeClass("z-plastnode").addClass("z-mlastnode");
else
$ico.removeClass("z-pnode").addClass("z-mnode");
}
};
/**************************************************/
//定义初始化滑动菜单
/**************************************************/
Z.onload(function()
{//菜单隐藏展开
Zmr.addTopMenuClick();
});
//END
})(zhiqim);
@@ -0,0 +1,35 @@
<#var zmr_sidebar_width = 0/>
<#var zmr_topnav_height = 0/>
<!DOCTYPE html>
<html>
<head>
<title>${context.getContextName()}</title>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
${Styles.src(zhiqim.css)}
${Scripts.src(zhiqim.js)}
${Styles.src(zmr_theme.css)}
${Scripts.src(zmr_theme.js)}
<#if request.getPathInContext() == "/"+zhiqim_manager+"/param.htm" || request.getPathInContext() == "/"+zhiqim_manager+"/themeMain.htm">
<script>
if (top.location == self.location)
{//从其他主题切换过来的时候
top.location.href = "${context.getRootPath("/"+zhiqim_manager+"/main.htm")}";
}
</script>
</#if>
</head>
<body>
${Htmls.toCallFrame()}
<div class="container">
<div class="mainbody" style="margin-left:0;">
<!-- 主体开始 -->
<#include include/>
<!-- 主体结束 -->
</div>
</div>
</body>
</html>
@@ -0,0 +1,138 @@
<!DOCTYPE html>
<html>
<head>
<title>${context.getContextName()}</title>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
${Styles.src(zhiqim.css)}
${Scripts.src(zhiqim.js)}
${Styles.src(zmr_theme.css)}
${Scripts.src(zmr_theme.js)}
${Styles.htmlOverflowHidden()}
<script>
Zmr.contextPath = "${context.getContextPath()}";
Z.onload(Zmr.calcMainbodyHeight);
Z(window).resize(Zmr.calcMainbodyHeight);
</script>
</head>
<body>
<!--顶部导航 -->
<div class="topnav">
<div id="logo" class="logo z-pointer z-text-left ${sessionUser.getSidebarClass()}" onclick="Z.L.href('${context.getRootPath("/"+zhiqim_manager+"/welcome.htm")}', mainFrame)">${context.getAttribute("name")}</div>
<div class="topnavleft">
<div class="bar z-w60 z-text-center z-pointer" onclick="Zmr.sidebar();"><i class="z-font z-list z-px22"></i></div>
${zhiqim_manager_topnav_left_defined()}
</div>
<div class="topnavright">
${zhiqim_manager_topnav_right_defined()}
<#if ZmrOrgDao.getOrgList(request, sessionUser.getOperatorCode()).size() gt 1>
<div class="nav z-text-center z-pointer z-pd-l20 z-pd-r20" style="max-width:200px;" onclick="Zmr.selectOrgDialog();">${ZmrOrgDao.getOrgName(request, sessionUser.getSelectedOrgId())}</div>
</#if>
<div class="nav z-w100 z-text-center z-pointer" onclick="Z.L.reload(mainFrame);">刷新</div>
<div class="nav z-w100 z-text-center z-pointer" onclick="Z.L.confirm('${context.getRootPath("/"+zhiqim_manager+"/logout.htm")}', '确实要退出吗?');">退出系统</div>
</div>
</div>
<!--容器开始 -->
<div id="container" class="container">
<!--侧边导航 -->
<div id="sidebar" class="sidebar ${sessionUser.getSidebarClass()}">
<!-- 个人中心 -->
<div class="z-h80 z-pd-t15 z-pd-l15 z-bd-b">
<div class="z-float-left z-w50 z-h50 z-mg-r10"><img class="z-bd-rd50p z-bd z-pd3 z-bg-white z-w50 z-h50" src="${sessionUser.getAvatar50()}"></div>
<div class="z-float-left z-lh25">
<span class="z-px14 z-bold">${sessionUser.getOperatorName()}</span><br>
<span class="z-color-666"><a href="${context.getRootPath("/"+zhiqim_manager+"/profile.htm")}" target="mainFrame">个人中心</a></span>
</div>
</div>
<!-- 栏目列表 -->
<#var topMenuCode = sessionUser.getSelectedTopMenuCodeOrFirstMenuCode(request, designatedPath)/>
<#for topMenu : sessionUser.getTopMenuList()>
<#if sessionUser.hasChildMenu(topMenu.getMenuCode())>
<p><i class="z-font z-px18 z-mg-r5 ${topMenu.getMenuIcon()}"></i>#{topMenu.getMenuName()}<i class="z-arrow z-px5"><span></span></i></p>
<ul id="${topMenu.getMenuCode()}" style="display: <#if topMenu.getMenuCode() == topMenuCode>block<#else>none</#if>;">
<#for childMenu : sessionUser.getChildMenuList(topMenu.getMenuCode())>
<li onclick="Zmr.doClickChildMenu(this, '${context.getRootPath(childMenu.getMenuUrl())}');" <#if context.getRootPath(childMenu.getMenuUrl()) == sessionUser.getMainUrl()>class="active"</#if>>#{childMenu.getMenuName()}</li>
</#for>
</ul>
<#elseif Validates.isNotEmptyBlank(topMenu.getMenuUrl())>
<p onclick="Z.L.href('${context.getRootPath(topMenu.getMenuUrl())}', mainFrame);"><i class="z-font z-px18 z-mg-r5 ${topMenu.getMenuIcon()}"></i>#{topMenu.getMenuName()}</p>
</#if>
</#for>
</div>
<!--主体-->
<div id="mainbody" class="mainbody" style="margin-left:<#if sessionUser.hasSidebar()>200px<#else>0</#if>">
<iframe id="mainFrame" name="mainFrame" frameborder="0" scrolling="auto" src="${sessionUser.getMainUrl()}" height="100%" width="100%"></iframe>
</div>
<!--容器结束 -->
</div>
<#if Validates.isNotEmptyBlank(sessionUser.getOperator().getInitialPassword()) && sessionUser.getOperator().getInitialPassword().equals(sessionUser.getOperator().getOperatorPass())>
<script>
function doModifyPass(form)
{
var ajax = new Z.Ajax();
ajax.setContextPath("${context.getContextPath()}");
ajax.setClassName("ZmrProfilePresenter");
ajax.setMethodName("doModifyPass");
ajax.setParamForm(form);
ajax.setFailureAlert();
ajax.setSuccessAlertReloadParent("修改成功");
ajax.execute();
}
var dialog = new Z.Dialog();
dialog.title = '<span style="font-weight:bold">初始密码需要修改</span>';
dialog.text = '<div id="dialog_content"></div>';
dialog.width = 650;
dialog.height = 280;
dialog.fixed = true;
dialog.close = function ()
{//关闭
dialog.remove();
dialog = null;
}
dialog.execute();
dialog.$background.remove();//去边框
var text = `
<form>
<input type="text" class="z-hidden-fixed">
<input type="password" class="z-hidden-fixed">
<table class="z-table z-mg-t10 z-mg-b10">
<tr class="z-h60">
<td width="80" class="zi-pd-l10">旧&ensp;密&ensp;码:</td>
<td width="303"><input name="oldPassword" type="password" class="z-input z-w300 ${zmr_color_class}" maxlength="16" autocomplete="off"></td>
<td width="10" class="z-px14 z-text-red zi-pd-t6">*</td>
<td width="*" class="zi-pd-r10 z-px14 z-color-999">请输入原始密码</td>
</tr>
<tr class="z-h60">
<td class="zi-pd-l10">新&ensp;密&ensp;码:</td>
<td><input name="newPassword" type="password" class="z-input z-w300 ${zmr_color_class}" maxlength="16" autocomplete="off"></td>
<td class="z-px14 z-text-red zi-pd-t6">*</td>
<td class="zi-pd-r10 z-px12 z-color-999">6-16位密码,大写字母、小写字母、数字和特殊字符必须四选三,特殊字符支持</span><span class="z-px12 z-color-999 z-samp">.\`_~!@#$%</span></td>
</tr>
<tr class="z-h60">
<td class="zi-pd-l10">确认密码:</td>
<td><input name="newPassword2" type="password" class="z-input z-w300 ${zmr_color_class}" maxlength="16" autocomplete="off"></td>
<td class="z-px14 z-text-red zi-pd-t6">*</td>
<td class="zi-pd-r10 z-px14 z-color-999">再次输入新密码</td>
</tr>
</table>
<div class="z-absolute z-b0 z-l0 z-w100p z-h80 z-pd20 z-text-center z-bg-gray">
<button type="button" class="z-button z-large z-w100 ${zmr_color_class}" onclick="doModifyPass(this.form);">提交</button>
</div>
</form>
`;
Z("#dialog_content").htmlc(text);
dialog.innerAlert = false;
dialog.submit = function(){
}
document.getElementsByClassName("z-font z-error")[0].remove();
</script>
</#if>
</body>
</html>
@@ -0,0 +1,183 @@
<!DOCTYPE html>
<html>
<head>
<title>${context.getContextName()}</title>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
${Styles.src(zhiqim.css)}
${Scripts.src(zhiqim.js)}
${Scripts.src(jsencrypt.js)}
${Styles.htmlOverflowHidden()}
<style>
body{color:#333;background-color:#fff;background-image: url(ztmpl/zhiqim_manager/index_bg_01.jpg);background-repeat: no-repeat;background-size:100%;}
body,table,td,div{font-size:14px;line-height:120%;}
a,a:visited{color:#333;text-decoration:none;cursor:pointer;}
a:active,a:hover{color:#1e7eec;text-decoration:none;}
.header{position:fixed;width:100%;}
.header .toplogobg{width:316px;height:58px;background-image: url(ztmpl/zhiqim_manager/04_fresh/index_toplogobg.png);background-repeat: no-repeat;}
.header .toplogobg span{line-height:55px;color:#fff;font-size:25px;}
.footer{position:fixed;bottom:0px; width:100%;height:40px;background:rgba(255,255,255,0.2);line-height:40px;text-align:center;color:#fff;}
.login{background-color: #ffffff;width:700px;}
.input{color:#666;font-size:20px;border:2px solid #cecfcf;border-radius:5px;height:50px;line-height:50px;text-indent:10px;font-family:Consolas,"微软雅黑";}
.input:focus{border-color:#009899;}
.input.verificationCode{letter-spacing:4px;}
</style>
<script>
Z.onload(function()
{//默认焦点
if (Z("#operatorCode").val() == "")
Z("#operatorCode").focus();
else if (Z("#operatorPass").val() == "")
Z("#operatorPass").focus();
else if (Z("#verificationCode").val() == null)
Z("#verificationCode").focus();
else
Z("#operatorCode").focus();
Z(document).keydown(function(e)
{
if (Z.E.key(e) != Z.E.KEY.ENTER)
return;
if (!Z.Dialog.cache.isEmpty())
return;
doLogin();
});
});
function doRememberCode(rememberCode)
{//取消记住账号时,同时取消记住密码
if (!rememberCode.checked)
{
Z("#rememberPass")[0].checked = false;
Z("[data-id=rememberPass]").removeClass("z-active");
}
}
function doRememberPass(rememberPass)
{//记住密码时,同时记住账号
if (rememberPass.checked)
{
Z("#rememberCode")[0].checked = true;
Z("[data-id=rememberCode]").addClass("z-active");
}
}
function doLogin()
{//登陆
var operatorCode = Z("#operatorCode").val();
if (Z.V.isEmptyBlank(operatorCode))
{//用户名和密码必填
Z.failure("用户名不能为空!",function(){
Z("#operatorCode").focus();
});
return;
}
var operatorPass = Z("#operatorPass").val();
if (Z.V.isEmptyBlank(operatorPass))
{//用户名和密码必填
Z.failure("密码不能为空!",function(){
Z("#operatorPass").focus();
});
return;
}
var verificationCode = Z("#verificationCode").val();
if (Z("#verificationCode").length > 0 && verificationCode.length != 4)
{//如果有验证码框的时候,要求值必须是4位(数字在输入时控制)
Z.failure("验证码为4位数字!");
return;
}
//对密码进行RSA加密
var publicKey = "${ZmrParamDao.getPublicKey(context)}";
var encrypt = new JSEncrypt();
encrypt.setPublicKey(publicKey);
operatorPass = encrypt.encrypt(operatorPass);
var ajax = new Z.Ajax();
ajax.setContextPath("${context.getContextPath()}");
ajax.setClassName("ZmrLoginPresenter");
ajax.setMethodName("doLogin");
ajax.addParam("operatorCode", operatorCode);
ajax.addParam("operatorPass", operatorPass);
ajax.addParam("verificationCode", verificationCode);
<#if hasRememberCode>
ajax.addParam("rememberCode", Z("#rememberCode")[0].checked);
</#if>
<#if hasRememberPass>
ajax.addParam("rememberPass", Z("#rememberPass")[0].checked);
</#if>
ajax.setFailureAlertRecovery();
ajax.setSuccessLocationResponse();
ajax.setLoading("login", "正在登录...", {disabled:true,recovery:false});
ajax.execute();
}
</script>
</head>
<body>
<div class="header">
<div class="z-float-center z-w1200">
<div class="z-float-left"><img src="ztmpl/zhiqim_manager/04_fresh/index_topbgleft.png" style="width:442px;"></div>
<div class="z-float-left toplogobg z-text-center"><span>${context.getContextName()}</span></div>
<div class="z-float-right"><img src="ztmpl/zhiqim_manager/04_fresh/index_topbgright.png" style="width:442px;"></div>
</div>
</div>
<div class="z-absolute-center-middle login" style="height:<#if hasVerificationCode && hasRememberCode>410<#elseif hasVerificationCode>360<#elseif hasRememberCode>350<#else>300</#if>px">
<table class="z-table z-h100p">
<tr>
<td width="187" valign="bottom" class="z-text-center" style="background-color:#01adae;"><img src="ztmpl/zhiqim_manager/index_slogan_02.png"></td>
<td width="513" valign="top">
<input type="text" class="z-hidden-fixed"/>
<input type="password" class="z-hidden-fixed"/>
<div class="z-mg-l40">
<table class="z-table z-h70-tr z-pd5 z-color-white">
<tr>
<td class="z-px20 z-color-666 z-mg-t10">用户登录</td>
</tr>
<tr>
<td><input id="operatorCode" class="z-w400 input" placeholder="用户名" value="#{operatorCode}" maxlength="16" spellcheck="false" autocomplete="off"></td>
</tr>
<tr>
<td><input id="operatorPass" type="password" class="z-w400 input" placeholder="密码" value="#{operatorPass}" maxlength="16" spellcheck="false" autocomplete="off"></td>
</tr>
<#if hasVerificationCode>
<tr>
<td>
<input id="verificationCode" type="text" class="z-w300 input verificationCode" placeholder="验证码" value="" maxlength="4" data-options="type:Numeric;paste:true;" spellcheck="false" autocomplete="off">
<img class="z-pointer z-bd-rd5 z-mg-t-8" title="点击刷新验证码" onclick="this.src='service/vcode.jpg?bgColor=%231299ec&width=95&height=48&fontSize=20&yawp=true&t='+new Date().getTime();" src="service/vcode.jpg?bgColor=%231299ec&width=95&height=48&fontSize=20&yawp=true&t=${DateTimes.getDateTime17String()}">
</td>
</tr>
</#if>
<#if hasRememberCode>
<tr class="zi-h40">
<td class="z-px16 z-color-gray">
<input id="rememberCode" type="checkbox" data-role="z-checkbox" data-class="z-mg-r10 ${zmr_color_class}" onclick="doRememberCode(this);" <#if Validates.isNotEmpty(operatorCode)>checked</#if>>记住用户名
<#if hasRememberPass>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input id="rememberPass" type="checkbox" data-role="z-checkbox" data-class="z-mg-r10 ${zmr_color_class}" onclick="doRememberPass(this);" <#if Validates.isNotEmpty(operatorPass)>checked</#if>/>记住密码
</#if>
</td>
</tr>
</#if>
<tr>
<td>
<button id="login" class="z-button z-w400 z-h50 zi-px20 ${zmr_color_class}" onclick="doLogin()">&nbsp;&nbsp;</button>
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
</div>
<div class="footer">${zmr_copyright}</div>
</body>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

@@ -0,0 +1,125 @@
<!DOCTYPE html>
<html>
<head>
<title>${context.getContextName()}</title>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
${Styles.src(zhiqim.css)}
${Scripts.src(zhiqim.js)}
${Styles.src(zmr_theme.css)}
${Scripts.src(zmr_theme.js)}
</head>
<body>
${Htmls.toCallFrame()}
<!--顶部导航 -->
<div class="topnav">
<div id="logo" class="logo z-pointer z-text-left" onclick="Z.L.href('${context.getRootPath("/"+zhiqim_manager+"/welcome.htm")}')">${context.getAttribute("name")}</div>
<div class="topnavleft">
<#var topMenuCode = sessionUser.getSelectedTopMenuCodeOrFirstMenuCode(request, designatedPath)/>
<#var childMenuCode = sessionUser.getSelectedSecondMenuCode(request, designatedPath)/>
<#for topMenu : sessionUser.getTopMenuList()>
<#if sessionUser.hasChildMenu(topMenu.getMenuCode())>
<div class="dropdown nav">#{topMenu.getMenuName()}<i class="z-float-right z-font z-arrowhead-down z-px10"></i>
<ul id="${topMenu.getMenuCode()}" class="subnav">
<#for childMenu : sessionUser.getChildMenuList(topMenu.getMenuCode())>
<li class="z-relative<#if childMenu.getMenuCode() == childMenuCode> active</#if>" onclick="location.href='${context.getRootPath(childMenu.getMenuUrl())}'">#{childMenu.getMenuName()}</li>
</#for>
</ul>
</div>
<#elseif Validates.isNotEmptyBlank(topMenu.getMenuUrl())>
<div class="single nav" onclick="Z.L.href('${context.getRootPath(topMenu.getMenuUrl())}');">#{topMenu.getMenuName()}</div>
</#if>
</#for>
${zhiqim_manager_topnav_left_defined()}
</div>
<div class="topnavright">
${zhiqim_manager_topnav_right_defined()}
<#if ZmrOrgDao.getOrgList(request, sessionUser.getOperatorCode()).size() gt 1>
<div class="nav z-text-center z-pointer z-pd-l20 z-pd-r20" style="max-width:200px;" onclick="Zmr.selectOrgDialog();">${ZmrOrgDao.getOrgName(request, sessionUser.getSelectedOrgId())}</div>
</#if>
<div class="nav z-w80 z-text-center z-pointer" onclick="Z.L.href('${context.getRootPath("/"+zhiqim_manager+"/profile.htm")}');"><img class="z-bd-rd50p z-w40 z-h40" src="${sessionUser.getAvatar50()}"></div>
<div class="nav z-w100 z-text-center z-pointer" onclick="Z.L.reload();">刷新</div>
<div class="nav z-w100 z-text-center z-pointer" onclick="Z.L.confirm('${context.getRootPath("/"+zhiqim_manager+"/logout.htm")}', '确实要退出吗?');">退出系统</div>
</div>
</div>
<!--容器 -->
<div id="container" class="container">
<!--主体-->
<div id="mainbody" class="mainbody">
<#include include/>
<!--内容结束-->
</div>
</div>
<!--脚注-->
<div class="footer">
<div class="footer-wrap">${zmr_copyright}</div>
</div>
<#if Validates.isNotEmptyBlank(sessionUser.getOperator().getInitialPassword()) && sessionUser.getOperator().getInitialPassword().equals(sessionUser.getOperator().getOperatorPass())>
<script>
function doModifyPass(form)
{
var ajax = new Z.Ajax();
ajax.setContextPath("${context.getContextPath()}");
ajax.setClassName("ZmrProfilePresenter");
ajax.setMethodName("doModifyPass");
ajax.setParamForm(form);
ajax.setFailureAlert();
ajax.setSuccessAlertReloadParent("修改成功");
ajax.execute();
}
var dialog = new Z.Dialog();
dialog.title = '<span style="font-weight:bold">初始密码需要修改</span>';
dialog.text = '<div id="dialog_content"></div>';
dialog.width = 650;
dialog.height = 280;
dialog.fixed = true;
dialog.close = function ()
{//关闭
dialog.remove();
dialog = null;
}
dialog.execute();
dialog.$background.remove();//去边框
var text = `
<form>
<input type="text" class="z-hidden-fixed">
<input type="password" class="z-hidden-fixed">
<table class="z-table z-mg-t10 z-mg-b10">
<tr class="z-h60">
<td width="80" class="zi-pd-l10">旧&ensp;密&ensp;码:</td>
<td width="303"><input name="oldPassword" type="password" class="z-input z-w300 ${zmr_color_class}" maxlength="16" autocomplete="off"></td>
<td width="10" class="z-px14 z-text-red zi-pd-t6">*</td>
<td width="*" class="zi-pd-r10 z-px14 z-color-999">请输入原始密码</td>
</tr>
<tr class="z-h60">
<td class="zi-pd-l10">新&ensp;密&ensp;码:</td>
<td><input name="newPassword" type="password" class="z-input z-w300 ${zmr_color_class}" maxlength="16" autocomplete="off"></td>
<td class="z-px14 z-text-red zi-pd-t6">*</td>
<td class="zi-pd-r10 z-px12 z-color-999">6-16位密码,大写字母、小写字母、数字和特殊字符必须四选三,特殊字符支持</span><span class="z-px12 z-color-999 z-samp">.\`_~!@#$%</span></td>
</tr>
<tr class="z-h60">
<td class="zi-pd-l10">确认密码:</td>
<td><input name="newPassword2" type="password" class="z-input z-w300 ${zmr_color_class}" maxlength="16" autocomplete="off"></td>
<td class="z-px14 z-text-red zi-pd-t6">*</td>
<td class="zi-pd-r10 z-px14 z-color-999">再次输入新密码</td>
</tr>
</table>
<div class="z-absolute z-b0 z-l0 z-w100p z-h80 z-pd20 z-text-center z-bg-gray">
<button type="button" class="z-button z-large z-w100 ${zmr_color_class}" onclick="doModifyPass(this.form);">提交</button>
</div>
</form>
`;
Z("#dialog_content").htmlc(text);
dialog.innerAlert = false;
dialog.submit = function(){
}
document.getElementsByClassName("z-font z-error")[0].remove();
</script>
</#if>
</body>
</html>
@@ -0,0 +1,61 @@
<#--变量定义-->
<#var zmr_theme.css = context.getRootPath("/ztmpl/zhiqim_manager/"+themeMain+"/flatwise_2019010101.css")/>
<#var zmr_theme.js = context.getRootPath("/ztmpl/zhiqim_manager/"+themeMain+"/flatwise_2019010101.js")/>
<#var zmr_color_class = "z-blue"/>
<#var zmr_sidebar_width = 0/>
<#var zmr_topnav_height = 55/>
<#var zmr_breadcrumb_height = 40/>
<#var zmr_title_bgcolor = "#f5f5f5"/>
<#var zmr_thead_bgcolor = "#f5f5f5"/>
<#var zmr_tr_odd_bgcolor = "#f6fafd"/>
<#var zmr_tr_even_bgcolor = "#ffffff"/>
<#var zmr_tr_over_bgcolor = "#f6fafd"/>
<#var zmr_tfoot_bgcolor = "#ffffff"/>
<#--面包屑 -->
<#function zhiqim_manager_breadcrumb_name(name)>
<#if !ZmrParamDao.isThemeFrame(context)>
<div class="breadcrumb z-h40 z-lh40 z-bd-b" style="background-color:#eaedf1;">
<span class="z-pd-l20">${name}</span>
</div>
</#if>
</#function>
<#--面包屑一级栏目 -->
<#function zhiqim_manager_breadcrumb(name)>
<#if !ZmrParamDao.isThemeFrame(context)>
<div class="breadcrumb z-h40 z-lh40 z-bd-b" style="background-color:#eaedf1;">
<span class="z-pd-l20">当前位置:<a href="${context.getRootPath(ZmlContexts.parseZmlContent(request, ZmrParamDao.getMainIndexUrl(context)))}">首页</a>&nbsp;&nbsp;&nbsp;>>&nbsp;&nbsp;&nbsp;<span style="color:#078ce9;">${name}</span></span>
</div>
</#if>
</#function>
<#--面包屑二级栏目 -->
<#function zhiqim_manager_breadcrumb_parent(parentUrl, parentName, name)>
<#if !ZmrParamDao.isThemeFrame(context)>
<div class="breadcrumb z-h40 z-lh40 z-bd-b" style="background-color:#eaedf1;">
<span class="z-pd-l20">当前位置:<a href="${context.getRootPath(ZmlContexts.parseZmlContent(request, ZmrParamDao.getMainIndexUrl(context)))}">首页</a>&nbsp;&nbsp;&nbsp;>>&nbsp;&nbsp;&nbsp;<a href="${parentUrl}">${parentName}</a>&nbsp;&nbsp;&nbsp;>>&nbsp;&nbsp;&nbsp;<span style="color:#078ce9;">${name}</span></span>
</div>
</#if>
</#function>
<#--面包屑三级栏目 -->
<#function zhiqim_manager_breadcrumb_parent_last(parentUrl, parentName, lastUrl, lastName, name)>
<#if !ZmrParamDao.isThemeFrame(context)>
<div class="breadcrumb z-h40 z-lh40 z-bd-b" style="background-color:#eaedf1;">
<span class="z-pd-l20">当前位置:<a href="${context.getRootPath(ZmlContexts.parseZmlContent(request, ZmrParamDao.getMainIndexUrl(context)))}">首页</a>&nbsp;&nbsp;&nbsp;>>&nbsp;&nbsp;&nbsp;<a href="${parentUrl}">${parentName}</a>&nbsp;&nbsp;&nbsp;>>&nbsp;&nbsp;&nbsp;<a href="${lastUrl}">${lastName}</a>&nbsp;&nbsp;&nbsp;>>&nbsp;&nbsp;&nbsp;<span style="color:#078ce9;">${name}</span></span>
</div>
</#if>
</#function>
<#--显示记录分页-->
<#function zhiqim_manager_paging(result, link)>
<table class="z-table z-bordered zi-bd-t-none z-bg-white">
<tr class="z-h50">
<td><div class="z-float-right z-mg-r10">${PagingStd.toHtmlLink(result, link)}</div></td>
</tr>
</table>
</#function>
<#--显示记录分页JS-->
<#function zhiqim_manager_paging_jsMethod(result, jsMethod)>
<table class="z-table z-bordered zi-bd-t-none z-bg-white">
<tr class="z-h50">
<td><div class="z-float-right z-mg-r10">${PagingStd.toHtmlClick(result, jsMethod)}</div></td>
</tr>
</table>
</#function>
@@ -0,0 +1,91 @@
@charset "utf-8";
/* ZhiqimUI */
.z-input{color:#333;}
/* global */
body{color:#333;background-color:#fff;}
body,table,td,div{font-size:14px;line-height:120%;}
a,a:visited{color:#333;text-decoration:none;cursor:pointer;}
a:active,a:hover{color:#4bb0af;text-decoration:none;}
a.blue,a.blue:visited{color:#0066cc;text-decoration:none;cursor:pointer;}
a.blue:active,a.blue:hover{color:#0066cc;text-decoration:underline;}
/* topnav */
.topnav {position:relative;width:100%;min-width:680px;color:#fff;background-color:#00a2eb;height:55px;z-index:99;}
.topnav .logo {float:left;width:200px;height:55px;padding:0 10px;overflow:hidden;font-size:24px;line-height:55px;background-color:#2a80b9;word-break:break-all;word-wrap:break-word;}
.topnav a{color: #fff;}
.topnav .topnavleft {float:left;height:55px;line-height:55px;}
.topnav .topnavleft .nav, .topnav .topnavleft .nav-only{float:left;min-width:120px;height:55px;border-right:1px solid #008bd2;padding:0 10px;cursor:pointer;font-size:14px;line-height:55px;text-align:center;}
.topnav .topnavleft .nav.active{background-color:#008bd2;color:#fff;}
.topnav .topnavleft .nav:hover{background-color:#fff;color:#000;}
.topnav .topnavright {float:right;height:55px;}
.topnav .topnavright .nav, .topnav .topnavright .nav-only {float:left;height:55px;line-height:55px;border-left:1px solid #008bd2;}
.topnav .topnavright .nav:hover {background-color:#008bd2; color:#fff;}
/* [下拉] */
.topnav .topnavleft .dropdown{display:inline-block;width:130px;}
.topnav .topnavleft .dropdown:hover .subnav{display: block;}
.topnav .topnavleft .dropdown:hover i:before{content:"\f08b";}
.topnav .topnavleft .subnav{position:absolute;top:55px;margin-left:-10px;width:260px;display:none;background-color:#fff;box-shadow: 0px 5px 10px 0px rgba(0,0,0,0.2);}
.topnav .topnavleft .subnav li{float:left;color:#333;width:130px;padding: 12px 16px;text-decoration:none;display: block;}
.topnav .topnavleft .subnav li:hover,.topnav .topnavleft .subnav li.active{background-color: #f1f1f1;color:#078ce9;}
.topnav .topnavleft .single{display:inline-block;width:130px;}
.topnav .topnavleft .single:hover {background-color:#008bd2; color:#fff;}
/* container */
.container {position:relative;width:100%;height:100%; min-height:1000px;overflow:hidden;}
/*[替换z-tabnav的背景色为容器背景色]*/
.container .z-tabnav>nav li.z-active{border-bottom:1px solid #eaedf1;}
.container .z-tabnav>nav li.z-active:hover{background-color:#eaedf1;}
/* iframenav */
.iframenav{position:relative;height:40px;line-height:40px;}
/* [iframenav翻页] */
.iframenav-prev,.iframenav-next{position:absolute;top:0;width:50px;height:39px;z-index:1;background:#fff;cursor:pointer;padding:0 22px;text-align:center;line-height:39px;}
.iframenav-prev:hover,.iframenav-next:hover{background-color:#f5f5f5;}
.iframenav-prev{left:0;border-right:1px solid #d3d3d3;}
.iframenav-next{right:100px;border-left:1px solid #d3d3d3;}
.iframenav-prev .z-font,.iframenav-next .z-font{color:#999;margin-left:-8px;}
/* [iframenav控制] */
.iframenav-ctrl{position:absolute;top:0;right:0;}
.iframenav-ctrl-title{position:absolute;top:0;right:0;width:100px;height:39px;z-index:1;border-left:1px solid #d3d3d3;text-align:center;line-height:39px;color:#666;background:#fff;cursor:pointer;}
.iframenav-ctrl-title:hover{background-color:#f5f5f5;}
.iframenav-ctrl-title .z-font{color:#999;margin-left:6px;font-size:10px;}
.iframenav-ctrl-wrap{position:absolute;top:39px;right:0;display:none;width:150px;height:130px;z-index:2;background-color:#fff;border:1px solid #d3d3d3;}
.iframenav-ctrl-wrap ul{padding:10px 0;}
.iframenav-ctrl-wrap ul+ul{border-top:1px solid #ccc;}
.iframenav-ctrl-wrap li{padding:0 25px;line-height:30px;cursor:pointer;}
.iframenav-ctrl-wrap li:hover{background:#f1f1f1;}
/* [iframenav选项卡] */
.iframenav-tab-wrap{height:39px;margin:0 150px 0 50px;overflow:hidden;position:relative;}
.iframenav-tab-list{position:absolute;left:0;top:0;height:39px;background-color:#fff;overflow:hidden;}
.iframenav-tab-item{position:relative;float:left;line-height:39px;border-right:1px solid #d3d3d3;padding:0 35px 0 20px;background:#fff;color:#666;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}
.iframenav-tab-item.active{background-color:#d4d8db;}
.iframenav-tab-item:hover{color:#222;}
.iframenav-tab-item:first-child{padding-right:23px;}
.iframenav-tab-item .z-font{position:absolute;top:2px;width:25px;line-height:39px;color:#666;font-size:12px;cursor:pointer;text-align:center;}
.iframenav-tab-item .z-error{right:0;padding-right:5px;}
.iframenav-tab-item .z-error:hover{color:#f00;}
/* [iframenav内容页] */
.iframenav-cont{}
.iframenav-cont-item{width:100%;height:100%;display:none;}
.iframenav-cont-item.active{display:block;}
.iframenav-cont-item > iframe{width:100%;height:100%;border:0;margin:0;padding:0;}
/* mainbody */
.mainbody{position:relative;}
.mainbody .breadcrumb{position:relative;float:left;width:100%;}
.mainbody .content{position:relative;float:left;width:100%;padding:20px;}
/* footer */
.footer {position:relative;width:100%;height:60px;display:block;overflow:hidden;background-color:#f4f4f4;border-top:1px solid #d3d3d3;z-index:99;}
.footer-wrap {position:relative;margin:0 auto;height:100%;line-height:60px;text-align: center;color:#333;}
@@ -0,0 +1,68 @@
/*
* 版权所有 (C) 2015 知启蒙(ZHIQIM) 保留所有权利。
*
* 指定登记&发行网站: https://www.zhiqim.com/ 欢迎加盟知启蒙,[编程有你,知启蒙一路随行]。
*
* 本文采用《知启蒙许可证》,除非符合许可证,否则不可使该文件!
* 1、您可以免费使用、修改、合并、出版发行和分发,再授权软件、软件副本及衍生软件;
* 2、您用于商业用途时,必须在原作者指定的登记网站进行实名登记;
* 3、您在使用、修改、合并、出版发行和分发时,必须包含版权声明、许可声明,及保留原作者的著作权、商标和专利等知识产权;
* 4、您在互联网、移动互联网等大众网络下发行和分发再授权软件、软件副本及衍生软件时,必须在原作者指定的发行网站进行发行和分发;
* 5、您可以在以下链接获取一个完整的许可证副本。
*
* 许可证链接:http://zhiqim.org/licenses/LICENSE.htm
*
* 除非法律需要或书面同意,软件由原始码方式提供,无任何明示或暗示的保证和条件。详见完整许可证的权限和限制。
*/
+(function(Z)
{//BEGIN
/**************************************************/
//定义全局的对象,便于所有的页面调用
/**************************************************/
var Zmr = window.Zmr = {};
Zmr.selectOrgDialog = function()
{//弹出组织选择框
var dialog = new Z.Dialog();
dialog.title = "选择组织";
dialog.url = "orgSelector.htm";
dialog.width = 392;
dialog.height = 423;
dialog.fixed = true;
dialog.scroll = true;
dialog.execute();
};
Zmr.calcMainbodyHeight = function()
{//计算主体高度
var height = Z(document).clientHeight()-55;//-55为topnav的高度
Z("#container").css("height", height);
Z("#mainbody").css("height", height-40);//-40为iframenav高度
}
Zmr.treeExpand = function(code)
{//树菜单展开和关闭
var $menu = Z("#menu-"+code);
var $ico = Z("#ico-"+code);
if (!$menu.isHide())
{
$menu.hide();
if ($ico.hasClass("z-mlastnode"))
$ico.removeClass("z-mlastnode").addClass("z-plastnode");
else
$ico.removeClass("z-mnode").addClass("z-pnode");
}
else
{
$menu.show();
if ($ico.hasClass("z-plastnode"))
$ico.removeClass("z-plastnode").addClass("z-mlastnode");
else
$ico.removeClass("z-pnode").addClass("z-mnode");
}
};
//END
})(zhiqim);
@@ -0,0 +1,35 @@
<#var zmr_sidebar_width = 0/>
<#var zmr_topnav_height = 0/>
<!DOCTYPE html>
<html>
<head>
<title>${context.getContextName()}</title>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
${Styles.src(zhiqim.css)}
${Scripts.src(zhiqim.js)}
${Styles.src(zmr_theme.css)}
${Scripts.src(zmr_theme.js)}
<#if request.getPathInContext() == "/"+zhiqim_manager+"/param.htm" || request.getPathInContext() == "/"+zhiqim_manager+"/themeMain.htm">
<script>
if (top.location == self.location)
{//从其他主题切换过来的时候
top.location.href = "${context.getRootPath("/"+zhiqim_manager+"/main.htm")}";
}
</script>
</#if>
</head>
<body>
${Htmls.toCallFrame()}
<div class="container">
<div class="mainbody" style="margin-left:0;">
<!-- 主体开始 -->
<#include include/>
<!-- 主体结束 -->
</div>
</div>
</body>
</html>
@@ -0,0 +1,164 @@
<!DOCTYPE html>
<html>
<head>
<title>${context.getContextName()}</title>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
${Styles.src(zhiqim.css)}
${Scripts.src(zhiqim.js)}
${Styles.src(zmr_theme.css)}
${Scripts.src(zmr_theme.js)}
${Scripts.src(zhiqim_iframenav.js)}
${Styles.htmlOverflowHidden()}
<script>
Zmr.contextPath = "${context.getContextPath()}";
Zin.contextPath = "${context.getContextPath()}";
Z.onload(Zmr.calcMainbodyHeight);
Z(window).resize(Zmr.calcMainbodyHeight);
Z(window).resize(Zin.setTranslateForShowActive);
<#if !sessionUser.isWelcomeUrl()>
Z.onload(function()
{
var $elem = Z("#sidebar [data-url]");
if ($elem.length > 0)
{//存在指定主页,主动打开
Zin.doClickChildMenu($elem[0], $elem.attr("data-url"));
}
});
</#if>
</script>
</head>
<body>
<!--顶部导航 -->
<div class="topnav">
<div id="logo" class="logo z-pointer z-text-left" onclick="Zin.selectIframeTab('menu_index');">${context.getAttribute("name")}</div>
<div class="topnavleft" id="sidebar">
<#var topMenuCode = sessionUser.getSelectedTopMenuCodeOrFirstMenuCode(request, designatedPath)/>
<#var childMenuCode = sessionUser.getSelectedSecondMenuCode(request, designatedPath)/>
<#for topMenu : sessionUser.getTopMenuList()>
<#if sessionUser.hasChildMenu(topMenu.getMenuCode())>
<div class="dropdown nav">#{topMenu.getMenuName()}<i class="z-float-right z-font z-arrowhead-down z-px10"></i>
<ul id="${topMenu.getMenuCode()}" class="subnav">
<#for childMenu : sessionUser.getChildMenuList(topMenu.getMenuCode())>
<li class="z-relative<#if context.getRootPath(childMenu.getMenuUrl()) == sessionUser.getMainUrl()> active</#if>" onclick="Zin.doClickChildMenu(this, '${context.getRootPath(childMenu.getMenuUrl())}');" <#if context.getRootPath(childMenu.getMenuUrl()) == sessionUser.getMainUrl()>data-url="${context.getRootPath(childMenu.getMenuUrl())}"</#if>>#{childMenu.getMenuName()}</li>
</#for>
</ul>
</div>
<#elseif Validates.isNotEmptyBlank(topMenu.getMenuUrl())>
<div class="single nav" onclick="Zin.doClickChildMenu(this, '${context.getRootPath(topMenu.getMenuUrl())}');" <#if context.getRootPath(topMenu.getMenuUrl()) == sessionUser.getMainUrl()>data-url="${context.getRootPath(topMenu.getMenuUrl())}"</#if>>#{topMenu.getMenuName()}</div>
</#if>
</#for>
${zhiqim_manager_topnav_left_defined()}
</div>
<div class="topnavright">
${zhiqim_manager_topnav_right_defined()}
<#if ZmrOrgDao.getOrgList(request, sessionUser.getOperatorCode()).size() gt 1>
<div class="nav z-text-center z-pointer z-pd-l20 z-pd-r20" style="max-width:200px;" onclick="Zmr.selectOrgDialog();">${ZmrOrgDao.getOrgName(request, sessionUser.getSelectedOrgId())}</div>
</#if>
<div class="nav z-w80 z-text-center z-pointer" onclick="Zin.doClickChildMenu(this, '${context.getRootPath("/"+zhiqim_manager+"/profile.htm")}');"><img class="z-bd-rd50p z-w40 z-h40" src="${sessionUser.getAvatar50()}"></div>
<div class="nav z-w100 z-text-center z-pointer" onclick="Zin.refreshIframeTabActive();">刷新</div>
<div class="nav z-w100 z-text-center z-pointer" onclick="Z.L.confirm('${context.getRootPath("/"+zhiqim_manager+"/logout.htm")}', '确实要退出吗?');">退出系统</div>
</div>
</div>
<!--容器开始 -->
<div id="container" class="container">
<!-- 框架导航 -->
<div class="iframenav z-h40 z-lh40 z-bg-white z-bd-b">
<div class="iframenav-prev" onclick="Zin.turnIframeTab(false);"><i class="z-font z-arrow-left"></i><i class="z-font z-arrow-left"></i></div>
<div class="iframenav-tab-wrap">
<ul class="iframenav-tab-list">
<li class="iframenav-tab-item active" id="tab_menu_index" onclick="Zin.selectIframeTabEvent(event);"><span>首页</span></li>
</ul>
</div>
<div class="iframenav-next" onclick="Zin.turnIframeTab(true);"><i class="z-font z-arrow-right"></i><i class="z-font z-arrow-right"></i></div>
<div class="iframenav-ctrl">
<div class="iframenav-ctrl-title" onclick="Zin.toggleIframeCtrlWrap();">关闭操作<i class="z-font z-arrow-down"></i></div>
<div class="iframenav-ctrl-wrap">
<ul>
<li class="iframenav-ctrl-item" onclick="Zin.selectIframeTabActive();">定位当前选项卡</li>
</ul>
<ul>
<li class="iframenav-ctrl-item" onclick="Zin.closeIframeTabAll();">关闭全部选项卡</li>
<li class="iframenav-ctrl-item" onclick="Zin.closeIframeTabOther();">关闭其他选项卡</li>
</ul>
</div>
</div>
</div>
<!--框架内容-->
<div id="mainbody" class="mainbody iframenav-cont z-h100p">
<div id="iframe_menu_index" class="iframenav-cont-item active">
<iframe id="mainFrame" name="mainFrame" frameborder="0" scrolling="auto" src="welcome.htm"></iframe>
</div>
</div>
<!--容器结束 -->
</div>
<#if Validates.isNotEmptyBlank(sessionUser.getOperator().getInitialPassword()) && sessionUser.getOperator().getInitialPassword().equals(sessionUser.getOperator().getOperatorPass())>
<script>
function doModifyPass(form)
{
var ajax = new Z.Ajax();
ajax.setContextPath("${context.getContextPath()}");
ajax.setClassName("ZmrProfilePresenter");
ajax.setMethodName("doModifyPass");
ajax.setParamForm(form);
ajax.setFailureAlert();
ajax.setSuccessAlertReloadParent("修改成功");
ajax.execute();
}
var dialog = new Z.Dialog();
dialog.title = '<span style="font-weight:bold">初始密码需要修改</span>';
dialog.text = '<div id="dialog_content"></div>';
dialog.width = 650;
dialog.height = 280;
dialog.fixed = true;
dialog.close = function ()
{//关闭
dialog.remove();
dialog = null;
}
dialog.execute();
dialog.$background.remove();//去边框
var text = `
<form>
<input type="text" class="z-hidden-fixed">
<input type="password" class="z-hidden-fixed">
<table class="z-table z-mg-t10 z-mg-b10">
<tr class="z-h60">
<td width="80" class="zi-pd-l10">旧&ensp;密&ensp;码:</td>
<td width="303"><input name="oldPassword" type="password" class="z-input z-w300 ${zmr_color_class}" maxlength="16" autocomplete="off"></td>
<td width="10" class="z-px14 z-text-red zi-pd-t6">*</td>
<td width="*" class="zi-pd-r10 z-px14 z-color-999">请输入原始密码</td>
</tr>
<tr class="z-h60">
<td class="zi-pd-l10">新&ensp;密&ensp;码:</td>
<td><input name="newPassword" type="password" class="z-input z-w300 ${zmr_color_class}" maxlength="16" autocomplete="off"></td>
<td class="z-px14 z-text-red zi-pd-t6">*</td>
<td class="zi-pd-r10 z-px12 z-color-999">6-16位密码,大写字母、小写字母、数字和特殊字符必须四选三,特殊字符支持</span><span class="z-px12 z-color-999 z-samp">.\`_~!@#$%</span></td>
</tr>
<tr class="z-h60">
<td class="zi-pd-l10">确认密码:</td>
<td><input name="newPassword2" type="password" class="z-input z-w300 ${zmr_color_class}" maxlength="16" autocomplete="off"></td>
<td class="z-px14 z-text-red zi-pd-t6">*</td>
<td class="zi-pd-r10 z-px14 z-color-999">再次输入新密码</td>
</tr>
</table>
<div class="z-absolute z-b0 z-l0 z-w100p z-h80 z-pd20 z-text-center z-bg-gray">
<button type="button" class="z-button z-large z-w100 ${zmr_color_class}" onclick="doModifyPass(this.form);">提交</button>
</div>
</form>
`;
Z("#dialog_content").htmlc(text);
dialog.innerAlert = false;
dialog.submit = function(){
}
document.getElementsByClassName("z-font z-error")[0].remove();
</script>
</#if>
</body>
</html>
@@ -0,0 +1,166 @@
<!DOCTYPE html>
<html>
<head>
<title>${context.getContextName()}</title>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
${Styles.src(zhiqim.css)}
${Scripts.src(zhiqim.js)}
${Scripts.src(jsencrypt.js)}
${Styles.htmlOverflowHidden()}
<style>
body{color:#333;background-color:#fff;background-image: url(ztmpl/zhiqim_manager/index_bg_01.jpg);background-repeat: no-repeat;background-size:100%;}
body,table,td,div{font-size:14px;line-height:120%;}
a,a:visited{color:#333;text-decoration:none;cursor:pointer;}
a:active,a:hover{color:#1e7eec;text-decoration:none;}
.header{position:fixed;width:100%;height:40px;line-height:40px;background-color:#000; background:rgba(0,0,0,0.2); filter:alpha(opacity=20);}
.footer{position:fixed;bottom:0px; width:100%;height:40px;background:rgba(255,255,255,0.2);line-height:40px;text-align:center;color:#fff;}
.login{width:520px;;border:1px solid #ccc;background-color: #ffffff;border-radius:10px;padding:20px;}
.input{color:#666;font-size:20px;border:2px solid #cecfcf;border-radius:5px;height:50px;line-height:50px;text-indent:10px;font-family:Consolas,"微软雅黑";}
.input.verificationCode{letter-spacing:4px;}
</style>
<script>
Z.onload(function()
{//默认焦点
if (Z("#operatorCode").val() == "")
Z("#operatorCode").focus();
else if (Z("#operatorPass").val() == "")
Z("#operatorPass").focus();
else if (Z("#verificationCode").val() == null)
Z("#verificationCode").focus();
else
Z("#operatorCode").focus();
Z(document).keydown(function(e)
{
if (Z.E.key(e) != Z.E.KEY.ENTER)
return;
if (!Z.Dialog.cache.isEmpty())
return;
doLogin();
});
});
function doRememberCode(rememberCode)
{//取消记住账号时,同时取消记住密码
if (!rememberCode.checked)
{
Z("#rememberPass")[0].checked = false;
Z("[data-id=rememberPass]").removeClass("z-active");
}
}
function doRememberPass(rememberPass)
{//记住密码时,同时记住账号
if (rememberPass.checked)
{
Z("#rememberCode")[0].checked = true;
Z("[data-id=rememberCode]").addClass("z-active");
}
}
function doLogin()
{//登陆
var operatorCode = Z("#operatorCode").val();
if (Z.V.isEmptyBlank(operatorCode))
{//用户名和密码必填
Z.failure("用户名不能为空!",function(){
Z("#operatorCode").focus();
});
return;
}
var operatorPass = Z("#operatorPass").val();
if (Z.V.isEmptyBlank(operatorPass))
{//用户名和密码必填
Z.failure("密码不能为空!",function(){
Z("#operatorPass").focus();
});
return;
}
var verificationCode = Z("#verificationCode").val();
if (Z("#verificationCode").length > 0 && verificationCode.length != 4)
{//如果有验证码框的时候,要求值必须是4位(数字在输入时控制)
Z.failure("验证码为4位数字!");
return;
}
//对密码进行RSA加密
var publicKey = "${ZmrParamDao.getPublicKey(context)}";
var encrypt = new JSEncrypt();
encrypt.setPublicKey(publicKey);
operatorPass = encrypt.encrypt(operatorPass);
var ajax = new Z.Ajax();
ajax.setContextPath("${context.getContextPath()}");
ajax.setClassName("ZmrLoginPresenter");
ajax.setMethodName("doLogin");
ajax.addParam("operatorCode", operatorCode);
ajax.addParam("operatorPass", operatorPass);
ajax.addParam("verificationCode", verificationCode);
<#if hasRememberCode>
ajax.addParam("rememberCode", Z("#rememberCode")[0].checked);
</#if>
<#if hasRememberPass>
ajax.addParam("rememberPass", Z("#rememberPass")[0].checked);
</#if>
ajax.setFailureAlertRecovery();
ajax.setSuccessLocationResponse();
ajax.setLoading("login", "正在登录...", {disabled:true,recovery:false});
ajax.execute();
}
</script>
</head>
<body>
<div class="header">
<div class="z-float-left z-w400 z-lh40 z-pd-l10 z-color-white">欢迎登录&nbsp;&nbsp;[&nbsp;${context.getContextName()}&nbsp;]</div>
<div class="z-float-right z-text-right z-w200 z-lh40 z-pd-r10"></div>
</div>
<div class="z-absolute-center-middle login" style="height:<#if hasVerificationCode && hasRememberCode>420<#elseif hasVerificationCode>390<#elseif hasRememberCode>350<#else>320</#if>px">
<input type="text" class="z-hidden-fixed"/>
<input type="password" class="z-hidden-fixed"/>
<div class="z-px24 zi-bd-b z-color-666 z-pd-b10"><i class="z-font z-customer"></i>&nbsp;&nbsp;用户登录</div>
<div style="padding:25px 40px 20px 30px;">
<table class="z-table z-h100p z-h70-tr z-pd5">
<tr>
<td><input id="operatorCode" class="z-w100p input" placeholder="用户名" value="#{operatorCode}" maxlength="16" spellcheck="false" autocomplete="off"></td>
</tr>
<tr>
<td><input id="operatorPass" type="password" class="z-w100p input" placeholder="密码" value="#{operatorPass}" maxlength="16" spellcheck="false" autocomplete="off"></td>
</tr>
<#if hasVerificationCode>
<tr>
<td>
<input id="verificationCode" class="input verificationCode" style="width:270px" placeholder="验证码" data-options="type:Numeric;paste:true;" maxlength="4" spellcheck="false" autocomplete="off">
<img class="z-pointer z-bd-rd5 z-mg-t-5" title="点击刷新验证码" onclick="this.src='service/vcode.jpg?bgColor=%231299ec&width=120&height=50&fontSize=20&yawp=true&t='+new Date().getTime();" src="service/vcode.jpg?bgColor=%231299ec&width=120&height=50&fontSize=20&yawp=true&t=${DateTimes.getDateTime17String()}">
</td>
</tr>
</#if>
<#if hasRememberCode>
<tr class="zi-h40">
<td class="z-px16 z-color-gray">
<input id="rememberCode" type="checkbox" data-role="z-checkbox" data-class="z-mg-r10 ${zmr_color_class}" onclick="doRememberCode(this);" <#if Validates.isNotEmpty(operatorCode)>checked</#if>>记住用户名
<#if hasRememberPass>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input id="rememberPass" type="checkbox" data-role="z-checkbox" data-class="z-mg-r10 ${zmr_color_class}" onclick="doRememberPass(this);" <#if Validates.isNotEmpty(operatorPass)>checked</#if>/>记住密码
</#if>
</td>
</tr>
</#if>
<tr>
<td><button class="z-button z-xlarge z-w100p z-h50 zi-px20 ${zmr_color_class}" onclick="doLogin()">&nbsp;&nbsp;</button></td>
</tr>
</table>
</div>
</div>
<div class="footer">${zmr_copyright}</div>
</body>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

@@ -0,0 +1 @@
<#include include/>
@@ -0,0 +1,4 @@
<#-- 主题变量和函数定义 -->
<#include "/ztmpl/zhiqim_manager/"+themeIndex+"/define.htm"/>
<#-- 主题首页定义 -->
<#include "/ztmpl/zhiqim_manager/"+themeIndex+"/index.htm"/>
Binary file not shown.

After

Width:  |  Height:  |  Size: 270 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 331 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

@@ -0,0 +1,17 @@
<#-- 主题变量和函数定义 -->
<#include "/ztmpl/zhiqim_manager/"+themeMain+"/define.htm"/>
<!DOCTYPE html>
<html>
<head>
<title>${context.getContextName()}</title>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
${Styles.src(zhiqim.css)}
${Scripts.src(zhiqim.js)}
${Styles.src(zmr_theme.css)}
</head>
<body>
<#include include/>
</body>
</html>
File diff suppressed because one or more lines are too long
@@ -0,0 +1,15 @@
<#-- 主题变量和函数定义 -->
<#include "/ztmpl/zhiqim_manager/"+themeMain+"/define.htm"/>
<!DOCTYPE html>
<html lang="en">
<head>
<title>秒绘设计</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable=no,maximum-scale=1.0,minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
${Scripts.src(zhiqim.js)}
</head>
<body>
<#include include/>
</body>
</html>
@@ -0,0 +1,15 @@
<#-- 主题变量和函数定义 -->
<#include "/ztmpl/zhiqim_manager/"+themeMain+"/define.htm"/>
<!DOCTYPE html>
<html>
<head>
<title>秒绘设计</title>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
${Scripts.src(zhiqim.js)}
</head>
<body>
<#include include/>
</body>
</html>
@@ -0,0 +1,12 @@
<#-- 主题变量和函数定义 -->
<#include "/ztmpl/zhiqim_manager/"+themeMain+"/define.htm"/>
<#-- 判断是否启用了iframe -->
<#if !ZmrParamDao.isThemeFrame(context)>
<#include "/ztmpl/zhiqim_manager/"+themeMain+"/alone.htm"/>
<#else>
<#if request.getPathInContext() == "/"+zhiqim_manager+"/main.htm">
<#include "/ztmpl/zhiqim_manager/"+themeMain+"/iframeMain.htm"/>
<#else>
<#include "/ztmpl/zhiqim_manager/"+themeMain+"/iframeInner.htm"/>
</#if>
</#if>
File diff suppressed because one or more lines are too long
@@ -0,0 +1,266 @@
/*
* 版权所有 (C) 2015 知启蒙(ZHIQIM) 保留所有权利。
*
* 指定登记&发行网站: https://www.zhiqim.com/ 欢迎加盟知启蒙,[编程有你,知启蒙一路随行]。
*
* 本文采用《知启蒙许可证》,除非符合许可证,否则不可使该文件!
* 1、您可以免费使用、修改、合并、出版发行和分发,再授权软件、软件副本及衍生软件;
* 2、您用于商业用途时,必须在原作者指定的登记网站进行实名登记;
* 3、您在使用、修改、合并、出版发行和分发时,必须包含版权声明、许可声明,及保留原作者的著作权、商标和专利等知识产权;
* 4、您在互联网、移动互联网等大众网络下发行和分发再授权软件、软件副本及衍生软件时,必须在原作者指定的发行网站进行发行和分发;
* 5、您可以在以下链接获取一个完整的许可证副本。
*
* 许可证链接:http://zhiqim.org/licenses/LICENSE.htm
*
* 除非法律需要或书面同意,软件由原始码方式提供,无任何明示或暗示的保证和条件。详见完整许可证的权限和限制。
*/
+(function(Z)
{//BEGIN
/**************************************************/
//定义全局的对象,便于所有的页面调用
/**************************************************/
var Zin = window.Zin = {};
Zin.doClickChildMenu = function(elem, menuUrl)
{//点击二级栏目
var $elem = Z(elem);
//1.判断是否已存在,存在则置为显示并切换该框架导航选项卡置为活动
var elemId = $elem[0].id || "menu_" + Z.Ids.uuid();
$elem.attr("id", elemId);
var tabId = "tab_" + elemId;
var iframeId = "iframe_" + elemId;
var $tab = Z("#" + tabId);
var $iframe = Z("#" + iframeId);
if ($tab[0] && $iframe[0])
{
Zin.selectIframeTab(elemId);
return;
}
//2.不存在则创建该框架导航选项卡
var $tabList = Z(".iframenav-tab-list");
var clickText = $elem.attr("data-text") || $elem.text() || "未命名";
$tab = Z('<li class="iframenav-tab-item" id="'+ tabId +'"><span>'+ clickText +'</span><i class="z-font z-error"></i></li>')
.appendTo($tabList);
$tab.on("click", Zin.selectIframeTabEvent);
$tab.find(".z-refresh").on("click", Zin.refreshIframeTabClick);
$tab.find(".z-error").on("click", Zin.closeIframeTabClick);
$iframe = Z('<div id="'+ iframeId +'" class="iframenav-cont-item"><iframe src="'+ menuUrl +'" name="'+iframeId+'"></iframe></div>')
.appendTo(".iframenav-cont");
//3.选中自己,调整位置偏移,显示完整选项卡
Zin.selectIframeTab(elemId);
};
/**************************************************/
//3个iframenav的点击事件(其中刷新暂时没有添加)
/**************************************************/
Zin.selectIframeTabEvent = function(event)
{//点击选项卡标签页
var $tab = Z.E.current(event);
var tabId = $tab.id;
Zin.selectIframeTab(tabId.replace("tab_", ""));
};
Zin.refreshIframeTabClick = function(event)
{//点击选项卡上的刷新按钮
var $refresh = Z(Z.E.current(event));
var tabId = $refresh.parent()[0].id;
Zin.refreshIframeTab(tabId.replace("tab_", ""));
};
Zin.closeIframeTabClick = function(event)
{//点击选项卡上的关闭按钮
var $close = Z(Z.E.current(event));
var tabId = $close.parent()[0].id;
Zin.closeIframeTab(tabId.replace("tab_", ""));
};
/**************************************************/
//指定操作功能
/**************************************************/
Zin.selectIframeTab = function(id)
{//选择指定的选项卡
Z("#tab_"+id).addClass("active").siblings(".iframenav-tab-item").removeClass("active");
Z("#iframe_"+id).addClass("active").siblings(".iframenav-cont-item").removeClass("active");
Zin.setTranslateForShowActive();
var mainUrl = Z("#iframe_"+id+" iframe").attr("src");
if (mainUrl)
{//切换选项卡同步到后端,关闭选项卡时为null不处理,整页刷新时依然使用关闭的URL
var $elem = Z("#" + id);
$elem.parent().parent().find("li").removeClass("active");
$elem.addClass("active");
mainUrl = mainUrl.substring(location.origin.length);
Z.ajax().setContextPath(Zin.contextPath)
.setClassName("sessionUser").setMethodName("setMainUrl").addParam(mainUrl)
.execute();
}
};
Zin.refreshIframeTab = function(id)
{//刷新指定框架
Z("#iframe_" + id).find("iframe")[0].contentWindow.location.reload(true);
};
Zin.closeIframeTab = function(id)
{//关闭指定框架,并切换到前一个框架
var $currTab = Z("#tab_" + id);
var $prevTab = Z($currTab[0].previousElementSibling || Z(".iframenav-tab-item:first-child")[0]);
//删除当前框架,同时选中前一个为活动
Zin.closeIframeTabOnly(id);
Zin.selectIframeTab($prevTab[0].id.replace("tab_", ""));
};
Zin.closeIframeTabOnly = function(id)
{//仅关闭指定框架
Z("#tab_" + id).remove();
Z("#iframe_" + id).remove();
};
Zin.setTranslateForShowActive = function()
{//调整位置偏移,显示完整选项卡
var $tabList = Z(".iframenav-tab-list");
var $tabs = Z(".iframenav-tab-item");
//1.校准宽度
var fillWidth = 0;
$tabs.each(function(item){
fillWidth += item.getBoundingClientRect().width;
});
fillWidth = Math.ceil(fillWidth);
var wrapRect = Z(".iframenav-tab-wrap")[0].getBoundingClientRect();
$tabList.css("width", fillWidth > wrapRect.width ? fillWidth : wrapRect.width);
if (fillWidth < wrapRect.width)
$tabList.css("transform", "translate(0,0)");
//2.当前标签、前后两个标签,宽度信息
var $active = Z(".iframenav-tab-item.active");
var activeRect = $active[0].getBoundingClientRect();
var $prev = $active[0].previousElementSibling;
var prevWidth = !!$prev ? $prev.getBoundingClientRect().width : 0;
var $next = $active[0].nextElementSibling;
var nextWidth = !!$next ? $next.getBoundingClientRect().width : 0;
//3.计算理论偏移量
var mLeft = activeRect.left - prevWidth - wrapRect.left;
var mRight = activeRect.right + nextWidth - wrapRect.right;
var tabTransX = parseFloat($tabList.css("transform").replace(/^[^\d]+/,"") || 0);
tabTransX = tabTransX >= 0 ? tabTransX : 0;
if (mLeft < 0 && mRight > 0)
return;
if (mLeft < 0)
tabTransX += mLeft;
if (mRight > 0)
tabTransX += mRight;
$tabList.css("transform", "translate(-" + tabTransX + "px,0)");
};
/**************************************************/
//外部调用
/**************************************************/
Zin.toggleIframeCtrlWrap = function()
{//切换关闭操作界面
Z(".iframenav-ctrl-wrap").toggle();
};
Zin.selectIframeTabActive = function()
{//定位到当前选项卡
var $active = Z(".iframenav-tab-item.active");
var tabId = $active[0].id;
Zin.selectIframeTab(tabId.replace("tab_", ""));
Zin.toggleIframeCtrlWrap();
}
Zin.closeIframeTabAll = function()
{//关闭所有选项卡
var $tab = Z(".iframenav-tab-item:not(:first-child)");
var idList = [];
$tab.each(function(elem){idList.push(elem.id.replace("tab_", ""));});
idList.forEach(Zin.closeIframeTabOnly);
//选中首页
var $index = Z(".iframenav-tab-item:first-child");
Zin.selectIframeTab($index[0].id.replace("tab_", ""));
Zin.toggleIframeCtrlWrap();
};
Zin.closeIframeTabOther = function()
{//关闭其他选项卡
var $tab = Z(".iframenav-tab-item:not(:first-child)");
var $active = Z(".iframenav-tab-item.active");
var idList = [];
$tab.each(function(elem){if ($active[0] !== elem){idList.push(elem.id.replace("tab_",""));}});
idList.forEach(Zin.closeIframeTabOnly);
Zin.setTranslateForShowActive();
Zin.toggleIframeCtrlWrap();
};
Zin.refreshIframeTabActive = function()
{//刷新当前选项卡
var $active = Z(".iframenav-tab-item.active");
Zin.refreshIframeTab($active[0].id.replace("tab_",""));
};
Zin.turnIframeTab = function(isNext)
{//向前向后翻页选项卡
var wrapWidth = Z(".iframenav-tab-wrap")[0].getBoundingClientRect().width;
var $tabList = Z(".iframenav-tab-list");
var tabTransX = parseFloat($tabList.css("transform").replace(/^[^\d]+/,"") || 0);
tabTransX = tabTransX >= 0 ? tabTransX : 0;
var $tabs = Z(".iframenav-tab-item");
var listWidth = 0, fillWidth = 0;
var fillArray=[];
for (var i=0;i<$tabs.length;i++)
{
var tab = $tabs[i];
var tabWidth = tab.getBoundingClientRect().width;
listWidth += tabWidth;
if (isNext)
{
if (listWidth - tabTransX > wrapWidth)
{
tabTransX = listWidth - tabWidth;
break;
}
}
else
{
fillArray.unshift(tabWidth);
if (listWidth >= tabTransX)
{
while(fillWidth < wrapWidth)
{
fillWidth += fillArray[i++];
}
tabTransX = listWidth - fillWidth;
break;
}
}
}
$tabList.css("transform", "translate(-" + (tabTransX >= 0 ? tabTransX : 0) + "px,0)");
}
//END
})(zhiqim);
@@ -0,0 +1,208 @@
/*
* 版权所有 (C) 2015 知启蒙(ZHIQIM) 保留所有权利。
*
* 指定登记&发行网站: https://www.zhiqim.com/ 欢迎加盟知启蒙,[编程有你,知启蒙一路随行]。
*
* 本文采用《知启蒙许可证》,除非符合许可证,否则不可使该文件!
* 1、您可以免费使用、修改、合并、出版发行和分发,再授权软件、软件副本及衍生软件;
* 2、您用于商业用途时,必须在原作者指定的登记网站进行实名登记;
* 3、您在使用、修改、合并、出版发行和分发时,必须包含版权声明、许可声明,及保留原作者的著作权、商标和专利等知识产权;
* 4、您在互联网、移动互联网等大众网络下发行和分发再授权软件、软件副本及衍生软件时,必须在原作者指定的发行网站进行发行和分发;
* 5、您可以在以下链接获取一个完整的许可证副本。
*
* 许可证链接:http://zhiqim.org/licenses/LICENSE.htm
*
* 除非法律需要或书面同意,软件由原始码方式提供,无任何明示或暗示的保证和条件。详见完整许可证的权限和限制。
*/
+(function(Z)
{
//BEGIN
/**
* 图片裁切
*/
Z.ImageClipper = Z.Class.newInstance();
Z.ImageClipper.prototype =
{
defaults:
{
elem : null,
ratio: 1,
state : {},
img: null,
clipWidth: [50, 100, 150],
save: null
},
execute: function()
{
this.$elem = Z.$elem(this.elem, "Z.ImageClipper");
if (this.clipWidth == null || this.clipWidth.length == 0)
{
Z.alert("[Z.ImageClipper]没有设置clipWidth,或不是数组");
return;
}
this.id = Z.random(10);
var html = '<div id="ZImageClipper_'+this.id+'" class="z-relative" style="width:620px;height:460px;">'
+ ' <div id="ZImageClipper_image_'+this.id+'" class="z-relative z-w400 z-h400 z-bd z-overflow-hidden z-bg-white" style="cursor:move;background-repeat: no-repeat;">'
+ ' <div id="ZImageClipper_square_'+this.id+'" class="z-absolute z-w200 z-h200 z-bd" style="top:100px;left:100px;box-shadow: 0 0 0 1000px rgba(0, 0, 0, 0.5);"></div>'
+ ' <div id="ZImageClipper_loading_'+this.id+'" class="z-absolute-center-middle z-w60 z-h30 z-hide">加载中...</div>'
+ ' </div>'
+ ' <div class="z-w400 z-h30 z-mg-t10">'
+ ' <button type="button" class="z-button z-cyan z-w120 z-h50 zi-px20" id="ZImageClipper_upload_'+this.id+'">上传图像 </button>'
+ ' <button type="button" class="z-button z-cyan z-w50 z-h50 zi-px30" id="ZImageClipper_zoomIn_'+this.id+'">+</button>'
+ ' <button type="button" class="z-button z-cyan z-w50 z-h50 zi-px30" id="ZImageClipper_zoomOut_'+this.id+'">-</button>'
+ ' <button type="button" class="z-button z-cyan z-w80 z-h50 zi-px20" id="ZImageClipper_clip_'+this.id+'">裁切</button>'
+ ' <button type="button" class="z-button z-cyan z-w80 z-h50 zi-px20" id="ZImageClipper_save_'+this.id+'">保存</button>'
+ ' </div>'
+ ' <div id="ZImageClipper_clipped_'+this.id+'" class="z-absolute z-w200 z-text-center z-pd-t20 z-bd" style="top:0;right:0;height:460px;"></button>'
+ '</div>';
this.$elem.html(html);
this.$imageBox = this.$elem.find("#ZImageClipper_image_"+this.id);
this.$square = this.$elem.find("#ZImageClipper_square_"+this.id);
this.$loading = this.$elem.find("#ZImageClipper_loading_"+this.id).show();
this.image = new Image();
Z(this.image).load(function()
{
this.$loading.hide();
this.setBackground();
this.$imageBox.mousedown(this.onMouseDown, this).mousemove(this.onMouseMove, this);
Z(window).mouseup(this.onMouseUp, this);
}, this);
this.image.src = this.img;
Z("#ZImageClipper_zoomIn_"+this.id).click(this.onZoomIn, this);
Z("#ZImageClipper_zoomOut_"+this.id).click(this.onZoomOut, this);
this.$file = Z("<input id='ZImageClipper_upload_file_"+this.id+"' type='file' accept='image/jpg,image/jpeg,image/png' class='z-hide' single>");
this.$file.appendTo("body").change(function()
{
var file = this.$file[0].files[0];
var reader = new FileReader();
reader.onload = Z.bind(function(e)
{
this.img = e.target.result;
this.image.src = this.img;
}, this);
reader.readAsDataURL(file);
}, this);
Z("#ZImageClipper_upload_"+this.id).click(function(){this.$file[0].click();}, this);
Z("#ZImageClipper_clip_"+this.id).click(function()
{
var imgData = this.getDataURL();
var imgDiv = '';
Z.each(this.clipWidth, function(elem){
imgDiv += '<div class="z-w200 z-mg-b20"><img src="'+imgData+'" class="z-bd-rd50p" style="width:'+elem+'px;"><br>'+elem+' * '+elem+'</div>'
});
Z("#ZImageClipper_clipped_"+this.id).html(imgDiv);
}, this);
if (Z.T.isFunction(this.save)){
Z("#ZImageClipper_save_"+this.id).click(this.save, this);
}
},
setBackground: function()
{
var w = parseInt(this.image.width) * this.ratio;
var h = parseInt(this.image.height) * this.ratio;
var pw = (400 - w) / 2;
var ph = (400 - h) / 2;
this.$imageBox.css({
"background-image": "url(" + this.image.src + ")",
"background-size": w +"px " + h + "px",
"background-position": pw + "px " + ph + "px",
"background-repeat": "no-repeat"});
},
onMouseDown: function(e)
{
Z.E.stop(e);
this.state.dragging = true;
this.state.mouseX = e.clientX;
this.state.mouseY = e.clientY;
},
onMouseMove: function(e)
{
Z.E.stop(e);
if (!this.state.dragging)
return;
var x = e.clientX - this.state.mouseX;
var y = e.clientY - this.state.mouseY;
var bg = this.$imageBox.css('background-position').split(' ');
var bgX = x + parseInt(bg[0]);
var bgY = y + parseInt(bg[1]);
this.$imageBox.css('background-position', bgX +'px ' + bgY + 'px');
this.state.mouseX = e.clientX;
this.state.mouseY = e.clientY;
},
onMouseUp: function(e)
{
Z.E.stop(e);
this.state.dragging = false;
},
onZoomIn: function()
{
this.ratio *= 1.1;
this.setBackground();
},
onZoomOut: function()
{
this.ratio *= 0.9;
this.setBackground();
},
getDataURL: function()
{
var width = this.$square.offsetWidth(),
height = this.$square.offsetHeight(),
canvas = document.createElement("canvas"),
dim = this.$imageBox.css('background-position').split(' '),
size = this.$imageBox.css('background-size').split(' '),
dx = parseInt(dim[0]) - this.$imageBox.offsetWidth()/2 + width/2,
dy = parseInt(dim[1]) - this.$imageBox.offsetHeight()/2 + height/2,
dw = parseInt(size[0]),
dh = parseInt(size[1]),
sh = parseInt(this.image.height),
sw = parseInt(this.image.width);
canvas.width = width;
canvas.height = height;
var context = canvas.getContext("2d");
context.drawImage(this.image, 0, 0, sw, sh, dx, dy, dw, dh);
var imageData = canvas.toDataURL('image/png');
return imageData;
},
getBlob: function()
{
var imageData = this.getDataURL();
var b64 = imageData.replace('data:image/png;base64,','');
var binary = atob(b64);
var array = [];
for (var i = 0; i < binary.length; i++) {
array.push(binary.charCodeAt(i));
}
return new Blob([new Uint8Array(array)], {type: 'image/png'});
}
}
//END
})(zhiqim);
Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

@@ -0,0 +1,265 @@
/*
* 版权所有 (C) 2015 知启蒙(ZHIQIM) 保留所有权利。
*
* 指定登记&发行网站: https://www.zhiqim.com/ 欢迎加盟知启蒙,[编程有你,知启蒙一路随行]。
*
* 本文采用《知启蒙许可证》,除非符合许可证,否则不可使该文件!
* 1、您可以免费使用、修改、合并、出版发行和分发,再授权软件、软件副本及衍生软件;
* 2、您用于商业用途时,必须在原作者指定的登记网站进行实名登记;
* 3、您在使用、修改、合并、出版发行和分发时,必须包含版权声明、许可声明,及保留原作者的著作权、商标和专利等知识产权;
* 4、您在互联网、移动互联网等大众网络下发行和分发再授权软件、软件副本及衍生软件时,必须在原作者指定的发行网站进行发行和分发;
* 5、您可以在以下链接获取一个完整的许可证副本。
*
* 许可证链接:http://zhiqim.org/licenses/LICENSE.htm
*
* 除非法律需要或书面同意,软件由原始码方式提供,无任何明示或暗示的保证和条件。详见完整许可证的权限和限制。
*/
+(function(Z)
{
//BEGIN
/**
* WebGL+three.js 3D动画,当前有波浪和光线球两种
*/
Z.WebGLThree = Z.Class.newInstance();
Z.WebGLThree.prototype =
{
defaults:
{
//常量
SEPARATION: 125,
AMOUNTX: 35,
AMOUNTY: 35,
//传入参数
threePath: null,
elem: null,
//内部对象
camera: null,
scene: null,
renderer: null,
particles_ware: [],
particles_globe: [],
//运行时
count: 0,
mouseX: 0,
mouseY: 0,
windowHalfX: window.innerWidth / 2,
windowHalfY: window.innerHeight / 2,
rotation_speed: .002,
timeout: null
},
execute: function()
{
if (Z.B.mobile || Z.B.msieVer <= 9)
{//移动端和IE9以下不支持
return;
}
if (this.threePath == null || this.elem == null)
{//两个参数必须,未传不处理
return;
}
//先加载three.js,再初始化init
this.$elem = Z.$elem(this.elem, "Z.WebGLThree");
Z.loads(this.threePath, Z.bind(this.initWebGL, this));
},
initWebGL: function()
{
var animationType = Math.floor(2 * Math.random());
if (animationType == 0)
{//波浪
this.initWave();
this.animateWave();
}
else
{//光球
this.initGlobe();
this.animateGlobe();
}
//增加事件处理
Z(document).mousemove(this.onDocumentMouseMove, this)
.on("touchstart", this.onDocumentTouchStart, this)
.on("touchmove", this.onDocumentTouchMove, this);
Z(window).resize(this.onWindowResize, this);
},
/******************************************************************************************/
//光球
/******************************************************************************************/
initGlobe: function initGlobe()
{
this.camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 1, 1e4),
this.camera.position.z = 500,
this.scene = new THREE.Scene;
for (var t = 2 * Math.PI, i = function (e) {e.beginPath(), e.arc(0, 0, 25, 0, t, true), e.fill()}, t = 2 * Math.PI, n = 0; 500 > n; n++)
{
var o = new THREE.SpriteCanvasMaterial({color: 16777215,
transparent: true,
program: function (e) {e.beginPath(), e.arc(0, 0, .5, 0, t, true), e.fill()}});
var particle = new THREE.Sprite(o);
particle.position.x = 2 * Math.random() - 1;
particle.position.y = 2 * Math.random() - 1;
particle.position.z = 2 * Math.random() - 1;
particle.position.normalize();
particle.position.multiplyScalar(10 * Math.random() + 450);
particle.scale.multiplyScalar(4 + 2 * Math.random());
particle.material.opacity = .1;
this.scene.add(particle);
this.particles_globe.push(particle);
}
for (var n = 0; 500 > n; n++)
{
var s = new THREE.Geometry;
var r = new THREE.Vector3(2 * Math.random() - 1, 2 * Math.random() - 1, 2 * Math.random() - 1);
r.normalize();
r.multiplyScalar(450);
s.vertices.push(r);
var a = r.clone();
a.multiplyScalar(.3 * Math.random() + 1), s.vertices.push(a);
var l = new THREE.Line(s, new THREE.LineBasicMaterial({color: 16777215, opacity: .3}));
this.scene.add(l)
}
this.renderer = new THREE.CanvasRenderer({alpha: true});
this.renderer.setClearColor(0, 0);
this.renderer.setSize(window.innerWidth, window.innerHeight);
this.$elem.append(this.renderer.domElement)
},
animateGlobe: function()
{
requestAnimationFrame(Z.bind(this.animateGlobe, this));
this.renderGlobe();
},
renderGlobe: function()
{
var e = Z("body:hover"), t = this.camera.position.x, i = this.camera.position.y, n = this.camera.position.z;
if (e.length != 0 && this.timeout != null)
{
this.camera.position.x += .05 * (this.mouseX - this.camera.position.x);
}
else
{
this.camera.position.x = t * Math.cos(this.rotation_speed) - n * Math.sin(this.rotation_speed);
this.camera.position.z = n * Math.cos(this.rotation_speed) + t * Math.sin(this.rotation_speed);
}
this.camera.position.y += .05 * (-this.mouseY + 200 - this.camera.position.y);
this.camera.lookAt(this.scene.position);
Z(document).mousemove(function () {
this.timeout !== null && clearTimeout(this.timeout), this.timeout = setTimeout(function () {this.timeout = null}, 600)
});
for (var o = 0; o < this.particles_globe.length; o++)
{
var particle = this.particles_globe[o++];
temp = 50 * Math.sin(.3 * (o + this.count)) + .5 * Math.sin(.5 * (o + this.count));
opacity = Math.abs(temp) / 50 + .1;
opacity > 1 && (opacity = 1);
particle.material.opacity = opacity;
}
this.renderer.render(this.scene, this.camera);
this.count += .1;
},
/******************************************************************************************/
//波浪
/******************************************************************************************/
initWave: function()
{
this.camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 1, 1e4);
this.camera.position.z = 1e3;
this.camera.position.y = 100;
this.camera.position.y = 1e3;
this.scene = new THREE.Scene;
for (var t = 2 * Math.PI, i = 0, n = 0; this.AMOUNTX > n; n++)for (var o = 0; this.AMOUNTY > o; o++)
{
var s = new THREE.SpriteCanvasMaterial({color: 16777215,
transparent: true,
program: function (e) {e.beginPath(), e.arc(0, 0, .5, 0, t, true), e.fill()}});
var particle = this.particles_ware[i++] = new THREE.Sprite(s);
particle.position.x = n * this.SEPARATION - this.AMOUNTX * this.SEPARATION / 2;
particle.position.z = o * this.SEPARATION - this.AMOUNTY * this.SEPARATION / 2;
this.scene.add(particle), particle.material.opacity = .4;
}
this.renderer = new THREE.CanvasRenderer({alpha: true});
this.renderer.setClearColor(0, 0);
this.renderer.setSize(window.innerWidth, window.innerHeight);
this.$elem.append(this.renderer.domElement);
},
animateWave: function()
{
requestAnimationFrame(Z.bind(this.animateWave, this));
this.renderWave();
},
renderWave: function()
{
this.camera.position.x += .01 * (this.mouseX - this.camera.position.x),
this.camera.position.y += .005 * (this.mouseY - this.camera.position.y),
this.camera.lookAt(this.scene.position);
for (var e = 0, t = 0; this.AMOUNTX > t; t++)
{
for (var i = 0; this.AMOUNTY > i; i++)
{
var particle = this.particles_ware[e++];
particle.position.y = 50 * Math.sin(.3 * (t + this.count)) + 50 * Math.sin(.5 * (i + this.count));
particle.scale.x = particle.scale.y = 4 * (Math.sin(.3 * (t + this.count)) + 1) + 4 * (Math.sin(.5 * (i + this.count)) + 1);
opacity = Math.abs(particle.position.y) / 100;
opacity < .5 && (opacity = .5);
opacity > 1 && (opacity = 1);
particle.material.opacity = opacity;
}
}
this.renderer.render(this.scene, this.camera);
this.count += .03
},
/******************************************************************************************/
//事件处理
/******************************************************************************************/
onWindowResize: function()
{//缩放
this.windowHalfX = window.innerWidth / 2,
this.windowHalfY = window.innerHeight / 2,
this.camera.aspect = window.innerWidth / window.innerHeight,
this.camera.updateProjectionMatrix(),
this.renderer.setSize(window.innerWidth, window.innerHeight);
},
onDocumentMouseMove: function(e)
{//鼠标移动
this.mouseX = e.clientX - this.windowHalfX, this.mouseY = e.clientY + 150;
},
onDocumentTouchStart: function(e)
{//iOS触摸开始
1 === e.touches.length && (e.preventDefault(), this.mouseX = e.touches[0].pageX - this.windowHalfX, this.mouseY = -e.touches[0].pageY);
},
onDocumentTouchMove: function(e)
{//iOS触摸移动
1 === e.touches.length && (e.preventDefault(), this.mouseX = e.touches[0].pageX - this.windowHalfX, this.mouseY = -e.touches[0].pageY);
}
};
//END
})(zhiqim);
@@ -0,0 +1,71 @@
<script>
function doDelete()
{
var avatarId = Z.FM.getChecked("avatarId");
Z.confirm("确定删除该头像吗?", function()
{
var ajax = new Z.Ajax();
ajax.setContextPath("${context.getContextPath()}");
ajax.setClassName("ZmrAvatarPresenter");
ajax.setMethodName("doDelete");
ajax.addParam(avatarId);
ajax.setFailureAlert();
ajax.setSuccessAlertReload("删除成功");
ajax.execute();
});
}
</script>
${zhiqim_manager_breadcrumb("系统头像")}
${zhiqim_manager_content()}
<#-- 导航 -->
<div class="z-tabnav-main z-mg-b20 ${zmr_color_class}">
<nav>
<ul>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/menu.htm")><li onclick="Z.L.href('menu.htm');">系统菜单</li></#if>
<li class="z-active">系统头像</li>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/config.htm")><li onclick="Z.L.href('config.htm');">系统配置</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/cache.htm")><li onclick="Z.L.href('cache.htm');">系统缓存</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/param.htm")><li onclick="Z.L.href('param.htm');">系统参数</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/paramOperator.htm")><li onclick="Z.L.href('paramOperator.htm');">操作员参数</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/themeIndex.htm")><li onclick="Z.L.href('themeIndex.htm');">首页主题</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/themeMain.htm")><li onclick="Z.L.href('themeMain.htm');">主页主题</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/keys.htm")><li onclick="Z.L.href('keys.htm');">密钥生成</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/process.htm")><li onclick="Z.L.href('process.htm');">进程信息</li></#if>
</ul>
</nav>
</div>
<#-- 操作 -->
<#if ZmrAdminRule.check(request)>
<div class="z-float-right z-mg-b5">
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/avatarAdd.htm")><button class="z-button ${zmr_color_class}" onclick="Z.L.href('avatarAdd.htm');"><i class="z-font z-add"></i>增加系统头像</button></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/avatarModify.htm")><button class="z-button ${zmr_color_class}" onclick="Z.L.check('avatarModify.htm', 'avatarId');"><i class="z-font z-modify"></i>修改系统头像</button></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/avatarDelete.htm")><button class="z-button z-red" onclick="doDelete();"><i class="z-font z-delete"></i>删除系统头像</button></#if>
</div>
</#if>
<#-- 列表 -->
<table class="z-table z-bordered z-pd5 z-bg-white z-text-center">
<tr class="z-h40" bgcolor="${zmr_thead_bgcolor}">
<td width="50">选择</td>
<td width="28%">头像<span class="z-samp">(50*50)</span></td>
<td width="30%">头像<span class="z-samp">(100*100)</span></td>
<td width="*">头像<span class="z-samp">(150*150)</span></td>
</tr>
<#for item : result.list()>
<tr class="z-pointer" ${zhiqim_manager_tr_onmouse()} ${zhiqim_manager_tr_click_radio()}>
<td>
<#if ZmrAdminRule.check(request)>
<input name="avatarId" type="radio" data-role="z-radio" data-class="${zmr_color_class}" value="${item.getAvatarId()}">
</#if>
</td>
<td><img src="${sessionUser.getAvatarUrl(item.getAvatarId(), 50)}"></td>
<td><img src="${sessionUser.getAvatarUrl(item.getAvatarId(), 100)}"></td>
<td><img src="${sessionUser.getAvatarUrl(item.getAvatarId(), 150)}"></td>
</tr>
</#for>
${zhiqim_manager_tr_no_record(result, 4, "暂时没有系统头像信息")}
</table>
${zhiqim_manager_paging(result)}
${zhiqim_manager_content_end()}
@@ -0,0 +1,33 @@
<#var zhiqim_image_clipper.js = new ZmrCdnRuntime(context, "/ztmpl/zhiqim_manager/zhiqim_image_clipper.js")/>
${zhiqim_manager_history("avatar.htm")}
${request.getValidateScript()}
${Scripts.src(zhiqim_image_clipper.js)}
<script>
Z.onload(function()
{
//初始化上传头像
var clipper = new Z.ImageClipper();
clipper.elem = "clipper";
clipper.img = "${context.getRootPath("/ztmpl/zhiqim_manager/zhiqim_image_clipper_default.jpg")}";
clipper.save = function()
{
var ajax = new Z.Ajax();
ajax.setContextPath("${context.getContextPath()}");
ajax.setClassName("ZmrAvatarPresenter");
ajax.setMethodName("doInsert");
ajax.addParam(this.getDataURL());
ajax.setFailureAlert();
ajax.setSuccessAlertLocation("增加成功", "avatar.htm");
ajax.execute();
};
clipper.execute();
});
</script>
${zhiqim_manager_breadcrumb_parent("avatar.htm", "系统头像", "增加系统头像")}
${zhiqim_manager_content()}
${zhiqim_manager_title("增加系统头像")}
<div class="z-w100p z-bd z-pd20 z-bg-white">
<div id="clipper"></div>
</div>
${zhiqim_manager_return()}
${zhiqim_manager_content_end()}
@@ -0,0 +1,35 @@
<#var zhiqim_image_clipper.js = new ZmrCdnRuntime(context, "/ztmpl/zhiqim_manager/zhiqim_image_clipper.js")/>
${zhiqim_manager_history("avatar.htm")}
${request.getValidateScript()}
${Scripts.src(zhiqim_image_clipper.js)}
<script>
Z.onload(function()
{
//初始化上传头像
var clipper = new Z.ImageClipper();
clipper.elem = "clipper";
clipper.img = "${context.getRootPath("/ztmpl/zhiqim_manager/zhiqim_image_clipper_default.jpg")}";
clipper.save = function()
{
var ajax = new Z.Ajax();
ajax.setContextPath("${context.getContextPath()}");
ajax.setClassName("ZmrAvatarPresenter");
ajax.setMethodName("doUpdate");
ajax.addParam("${avatarId}");
ajax.addParam(this.getDataURL());
ajax.setFailureAlert();
ajax.setSuccessAlertLocation("修改成功", "avatar.htm");
ajax.execute();
};
clipper.execute();
});
</script>
${zhiqim_manager_breadcrumb_parent("avatar.htm" "系统头像" "修改系统头像")}
${zhiqim_manager_content()}
${zhiqim_manager_title("修改系统头像")}
<div class="z-w100p z-bd z-pd20 z-bg-white">
<div id="clipper"></div>
</div>
${zhiqim_manager_return()}
</form>
${zhiqim_manager_content_end()}
@@ -0,0 +1,54 @@
${request.getValidateSubmitScript()}
${zhiqim_manager_breadcrumb("系统缓存")}
${zhiqim_manager_content()}
<#-- 导航 -->
<div class="z-tabnav-main z-mg-b20 ${zmr_color_class}">
<nav>
<ul>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/menu.htm")><li onclick="Z.L.href('menu.htm');">系统菜单</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/avatar.htm")><li onclick="Z.L.href('avatar.htm');">系统头像</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/config.htm")><li onclick="Z.L.href('config.htm');">系统配置</li></#if>
<li class="z-active">系统缓存</li>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/param.htm")><li onclick="Z.L.href('param.htm');">系统参数</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/paramOperator.htm")><li onclick="Z.L.href('paramOperator.htm');">操作员参数</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/themeIndex.htm")><li onclick="Z.L.href('themeIndex.htm');">首页主题</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/themeMain.htm")><li onclick="Z.L.href('themeMain.htm');">主页主题</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/keys.htm")><li onclick="Z.L.href('keys.htm');">密钥生成</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/process.htm")><li onclick="Z.L.href('process.htm');">进程信息</li></#if>
</ul>
</nav>
</div>
<#-- 列表 -->
<#for server : list>
<#if server.getCacheMap().isEmpty()>
<#continue/>
</#if>
<table class="z-table z-bordered z-pd10 <#if group_index gt 0>z-mg-t10</#if> z-bg-white">
${zhiqim_manager_tr_title(4, "系统缓存["+server.getId()+"]列表")}
<tr class="z-h40" bgcolor="${zmr_thead_bgcolor}">
<td width="20%">表名</td>
<td width="*">对象</td>
<td width="330">定时器</td>
<td width="15%" class="z-text-center">操作</td>
</tr>
${zhiqim_manager_tr_no_record(group, 4, "暂时没有配置信息")}
</table>
<#for item : server.getCacheMap().keySet()>
<form method="post" onsubmit="return false;" data-role="z-call-frame">
<input name="id" type="hidden" value="${server.getId()}">
<input name="className" type="hidden" value="${item.getName()}">
<table class="z-table z-bordered zi-bd-t-none z-h60-tr z-pd10 z-lh150p" bgcolor="${zhiqim_manager_tr_bg(item_index)}">
<tr>
<td width="20%" class="zi-samp">#{server.table().getTable(item).getTable()}</td>
<td width="*" class="zi-samp">#{item.getName()}</td>
<td width="330" class="zi-samp">#{server.getCacheMap().get(item).toString()}</td>
<td width="15%" class="z-text-center"><button type="submit" class="z-button" onclick="submitForm(this.form);">刷新缓存</button></td>
</tr>
</table>
</form>
</#for>
</#for>
${zhiqim_manager_content_end()}
@@ -0,0 +1,66 @@
${request.getValidateSubmitScript()}
${zhiqim_manager_breadcrumb("系统配置")}
${zhiqim_manager_content()}
<#-- 导航 -->
<div class="z-tabnav-main z-mg-b20 ${zmr_color_class}">
<nav>
<ul>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/menu.htm")><li onclick="Z.L.href('menu.htm');">系统菜单</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/avatar.htm")><li onclick="Z.L.href('avatar.htm');">系统头像</li></#if>
<li class="z-active">系统配置</li>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/cache.htm")><li onclick="Z.L.href('cache.htm');">系统缓存</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/param.htm")><li onclick="Z.L.href('param.htm');">系统参数</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/paramOperator.htm")><li onclick="Z.L.href('paramOperator.htm');">操作员参数</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/themeIndex.htm")><li onclick="Z.L.href('themeIndex.htm');">首页主题</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/themeMain.htm")><li onclick="Z.L.href('themeMain.htm');">主页主题</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/keys.htm")><li onclick="Z.L.href('keys.htm');">密钥生成</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/process.htm")><li onclick="Z.L.href('process.htm');">进程信息</li></#if>
</ul>
</nav>
</div>
<#-- 列表 -->
<#for group : groupList>
<#if group.isPrivate()>
<#continue/>
</#if>
<table class="z-table z-bordered z-pd10 <#if group_index gt 0>z-mg-t10</#if> z-bg-white">
${zhiqim_manager_tr_title(4, "系统配置["+group.getId()+"]["+group.getDesc()+"]列表")}
<tr class="z-h40" bgcolor="${zmr_thead_bgcolor}">
<td width="20%">配置键</td>
<td width="*">配置值</td>
<td width="10%" class="z-text-center">操作</td>
<td width="30%">配置描述</td>
</tr>
${zhiqim_manager_tr_no_record(group, 4, "暂时没有配置信息")}
</table>
<#for item : group.list()>
<#if item.isPrivate()>
<#continue/>
</#if>
<#if ZmrAdminRule.check(request) && item.isPublic()>
<form method="post" onsubmit="return false;" data-role="z-call-frame">
<input name="groupId" type="hidden" value="${group.getId()}">
<input name="key" type="hidden" value="${item.getKey()}">
</#if>
<table class="z-table z-bordered zi-bd-t-none z-h60-tr z-pd10 z-lh150p" bgcolor="${zhiqim_manager_tr_bg(item_index)}">
<tr>
<td width="20%" class="zi-samp">#{item.getKey()}</td>
<#if ZmrAdminRule.check(request) && item.isPublic()>
<td width="*"><input name="value" class="z-input z-w100p zi-h40 <#if !Validates.isContainMultByteChar(item.getString())>zi-samp</#if> ${zmr_color_class}" value="#{item.getString()}" maxlength="800"></td>
<td width="10%" class="z-text-center"><button type="submit" class="z-button" onclick="submitForm(this.form)">修改</button></td>
<#else>
<td width="*" <#if !Validates.isContainMultByteChar(item.getString())>class="zi-samp"</#if>>#{item.getString()}</td>
<td width="10%" class="z-text-center"><button type="submit" class="z-button" disabled>修改</button></td>
</#if>
<td width="30%">#{item.getDesc()}</td>
</tr>
</table>
<#if ZmrAdminRule.check(request) && item.isPublic()>
</form>
</#if>
</#for>
</#for>
${zhiqim_manager_content_end()}
@@ -0,0 +1,93 @@
<#-- 显示子部门,并递归显示下级子部门 -->
<#function showChildDept(self, parent)>
<tr class="z-h30 z-pointer" ${zhiqim_manager_tr_onmouse()} ${zhiqim_manager_tr_click_radio()}>
<td>
<#if ZmrAdminRule.check(request)>
<input name="deptId" type="radio" data-role="z-radio" data-class="${zmr_color_class}" value="${self.self().getDeptId()}">
</#if>
</td>
<td>${self.self().getDeptId()}</td>
<td align="left" class="zi-pd-l6">
<#var level = self.self().getDeptLevel()/>
<#if level == 0>
<i class="z-ico z-tree z-30 z-normal z-root z-mg-r3"></i>
<#else>
<#for i : 1..(level-1)>
<#if self.isLastNode(level-i)>
<i class="z-ico z-tree z-30 z-normal z-blank"></i>
<#else>
<i class="z-ico z-tree z-30 z-normal z-vertline"></i>
</#if>
</#for>
<#if self.isLastNode()>
<i class="z-ico z-tree z-30 z-normal z-lastnode"></i>
<#else>
<i class="z-ico z-tree z-30 z-normal z-node"></i>
</#if>
<i class="z-ico z-tree z-item z-mg-r3"></i>
</#if>
#{self.self().getDeptName()}
</td>
<td><#if self.self().getDeptStatus() == 0>正常<#else><span class="z-color-red">停用</span></#if></td>
<td>${self.self().getDeptLevel()}</td>
<td>${self.self().getDeptManager()}</td>
<td>${self.self().getDeptSubManager()}</td>
</tr>
<#for child : self.children()>
${showChildDept(child, self)}
</#for>
</#function>
${zhiqim_manager_breadcrumb("部门管理")}
${zhiqim_manager_content()}
<#-- 导航 -->
<div class="z-tabnav-main z-mg-b20 ${zmr_color_class}">
<nav>
<ul>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/org.htm")><li onclick="Z.L.href('org.htm');">组织管理</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/orgRule.htm")><li onclick="Z.L.href('orgRule.htm');">组织权限</li></#if>
<li class="z-active">部门管理</li>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/deptOperator.htm")><li onclick="Z.L.href('deptOperator.htm');">部门成员</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/deptRule.htm")><li onclick="Z.L.href('deptRule.htm');">部门权限</li></#if>
</ul>
<div class="z-float-right z-mg-t10 z-mg-r5">
<#if ZmrAdminRule.check(request)>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/deptAdd.htm")><button class="z-button ${zmr_color_class}" onclick="Z.L.check('deptAdd.htm', 'deptId');"><i class="z-font z-add"></i>增加下级部门</button></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/deptModify.htm")><button class="z-button ${zmr_color_class}" onclick="Z.L.check('deptModify.htm', 'deptId');"><i class="z-font z-modify"></i>修改部门</button></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/deptDelete.htm")><button class="z-button z-red" onclick="Z.L.confirm('deptDelete.htm', '确认要删除该部门?', 'deptId', zCallFrame);"><i class="z-font z-delete"></i>删除部门</button></#if>
</#if>
</div>
</nav>
</div>
<#-- 列表 -->
<table class="z-table z-bordered z-h30-tr z-text-center z-bg-white">
<tr class="zi-h40" bgcolor="${zmr_thead_bgcolor}">
<td width="50">选择</td>
<td width="200">部门编号</td>
<td width="*">部门名称</td>
<td width="10%">部门状态</td>
<td width="10%">部门级别</td>
<td width="10%">部门负责人</td>
<td width="15%">部门副负责人</td>
</tr>
<#if size == 0>
${zhiqim_manager_no_record(6, "暂时没有部门信息")}
<#else>
<tr class="z-pointer" ${zhiqim_manager_tr_onmouse()} ${zhiqim_manager_tr_click_radio()}>
<td><#if ZmrAdminRule.check(request)><input name="deptId" type="radio" data-role="z-radio" data-class="${zmr_color_class}" value="${tree.self().getDeptId()}"></#if></td>
<td>${tree.self().getDeptId()}</td>
<td align="left" class="zi-pd-l6 <#if !tree.hasChildren()>zi-pd4</#if>"><i class="z-ico z-tree z-normal <#if tree.hasChildren()>z-30 z-root<#else>zi-h22</#if> z-mg-r3"></i> #{tree.self().getDeptName()}</td>
<td><#if tree.self().getDeptStatus() == 0>正常<#else><span class="z-color-red">停用</span></#if></td>
<td>${tree.self().getDeptLevel()}</td>
<td>${tree.self().getDeptManager()}</td>
<td>${tree.self().getDeptSubManager()}</td>
</tr>
<#for child : tree.children()>
${showChildDept(child, tree)}
</#for>
</#if>
</table>
${zhiqim_manager_list(size)}
${zhiqim_manager_content_end()}
@@ -0,0 +1,77 @@
${Scripts.onload("document.theForm.deptName.focus();")}
${zhiqim_manager_history("dept.htm")}
${request.getValidateScript()}
<script>
function doSelectorDialog(orgId)
{//弹出操作员选择框
var dialog = new Z.Dialog();
dialog.title = "选择操作员";
dialog.url = "operatorSelector.htm?orgId="+orgId;
dialog.width = 392;
dialog.height = 423;
dialog.fixed = true;
dialog.execute();
}
function doSelectorCallback(operatorCode)
{//选择操作员回调
document.theForm.deptManager.value = operatorCode;
}
function doOperatorsSelectorDialog(orgId)
{//弹出操作员多选框
var dialog = new Z.Dialog();
dialog.title = "选择操作员";
dialog.url = "operatorsSelector.htm?orgId="+orgId;
dialog.width = 392;
dialog.height = 423;
dialog.fixed = true;
dialog.execute();
}
function doOperatorsSelectorCallback(operatorCodes)
{//多选选操作员回调
document.theForm.deptSubManager.value = operatorCodes;
}
</script>
${zhiqim_manager_breadcrumb_parent("dept.htm" "部门管理" "增加部门")}
${zhiqim_manager_content()}
<form name="theForm" method="post" action="deptInsert.htm" onsubmit="return validateForm(this);" data-role="z-call-frame">
<input name="deptId" type="hidden" value="${Ids.longId13()}">
<input name="parentId" type="hidden" value="${parent.getDeptId()}">
<input name="orgId" type="hidden" value="${parent.getOrgId()}">
<table class="z-table z-bordered z-h50-tr z-pd10 z-lh150p z-bg-white">
<tr class="zi-h40 z-bg-gray z-bold">
<td colspan="2">增加部门</td>
</tr>
<tr>
<td width="40%">上级部门:<span class="z-color-999">(请选择)</span></td>
<td width="*">${parent.getDeptName()}</td>
</tr>
<tr>
<td>部门名称:<span class="z-color-999">2-16位)</span></td>
<td><input name="deptName" class="z-input z-w300 ${zmr_color_class}" maxlength="16"><span class="z-color-red">&nbsp;*</span></td>
</tr>
<tr>
<td>部门状态:<span class="z-color-999">(正常|停用)</span></td>
<td><select name="deptStatus" class="z-select z-w300" data-role="z-select" data-class="${zmr_color_class}"><option value="0">正常</option><option value="1">停用</option></select><span class="z-color-red">&nbsp;*</span></td>
</tr>
<tr>
<td>部门排序数:<span class="z-color-999">(必须是[0, 999999]范围的非负整数)</span></td>
<td><input name="deptSeq" class="z-input z-w300 ${zmr_color_class}" data-options="type:Integer;" value="100" maxlength="6"><span class="z-color-red">&nbsp;*</span></td>
</tr>
<tr>
<td>部门负责人:</td>
<td><input name="deptManager" class="z-input z-w130 zi-shadow-none" placeholder="请点按钮选择" readonly><button type="button" class="z-button z-mg-l10 ${zmr_color_class}" onclick="doSelectorDialog(${parent.getOrgId()});"><i class="z-font z-add"></i>选择操作员</button><button type="button" class="z-button z-mg-l3" onclick="doSelectorCallback('');">清除</button></td>
</tr>
<tr>
<td>部门副负责人:</td>
<td><input name="deptSubManager" class="z-input z-w130 zi-shadow-none" placeholder="请点按钮选择" readonly><button type="button" class="z-button z-mg-l10 ${zmr_color_class}" onclick="doOperatorsSelectorDialog(${parent.getOrgId()});"><i class="z-font z-add"></i>选择操作员</button><button type="button" class="z-button z-mg-l3" onclick="doOperatorsSelectorCallback('');">清除</button></td>
</tr>
<tr>
<td>部门描述:<span class="z-color-999">(不能超过100个汉字)</span></td>
<td><textarea name="deptDesc" class="z-textarea z-w300 z-h120 ${zmr_color_class}" maxlength="100"></textarea></td>
</tr>
</table>
${zhiqim_manager_submit()}
</form>
${zhiqim_manager_content_end()}
@@ -0,0 +1,79 @@
${zhiqim_manager_history("dept.htm")}
${request.getValidateScript()}
<script>
function doSelectorDialog(orgId)
{//弹出操作员选择框
var dialog = new Z.Dialog();
dialog.title = "选择操作员";
dialog.url = "operatorSelector.htm?orgId="+orgId;
dialog.width = 392;
dialog.height = 423;
dialog.fixed = true;
dialog.scroll = true;
dialog.execute();
}
function doSelectorCallback(operatorCode)
{//选择操作员回调
document.theForm.deptManager.value = operatorCode;
}
function doOperatorsSelectorDialog(orgId)
{//弹出操作员多选框
var dialog = new Z.Dialog();
dialog.title = "选择操作员";
dialog.url = "operatorsSelector.htm?orgId="+orgId;
dialog.width = 392;
dialog.height = 423;
dialog.fixed = true;
dialog.execute();
}
function doOperatorsSelectorCallback(operatorCodes)
{//多选选操作员回调
document.theForm.deptSubManager.value = operatorCodes;
}
</script>
${zhiqim_manager_breadcrumb_parent("dept.htm" "部门管理" "修改部门")}
${zhiqim_manager_content()}
<form name="theForm" method="post" action="deptUpdate.htm" onsubmit="return validateForm(this);" data-role="z-call-frame">
<input name="deptId" type="hidden" value="${item.getDeptId()}">
<input name="parentId" type="hidden" value="${item.getParentId()}">
<input name="deptLevel" type="hidden" value="${item.getDeptLevel()}">
<input name="deptParentAll" type="hidden" value="${item.getDeptParentAll()}">
<input name="orgId" type="hidden" value="${item.getOrgId()}">
<table class="z-table z-bordered z-h50-tr z-pd10 z-lh150p z-bg-white">
<tr class="zi-h40 z-bg-gray z-bold">
<td colspan="2">修改部门</td>
</tr>
<tr>
<td width="40%">部门编号:<span class="z-color-999">(由不定长6位字母或数字组合)</span></td>
<td width="*">#{item.getDeptId()}</td>
</tr>
<tr>
<td>部门名称:<span class="z-color-999">(不能超过32个汉字)</span></td>
<td><input name="deptName" class="z-input z-w300 ${zmr_color_class}" value="#{item.getDeptName()}" maxlength="32"><span class="z-color-red">&nbsp;*</span></td>
</tr>
<tr>
<td>部门状态:<span class="z-color-999">(正常|停用)</span></td>
<td><select name="deptStatus" class="z-select z-w300" data-role="z-select" data-class="${zmr_color_class}"><option value="0"<#if item.getDeptStatus()==0> selected</#if>>正常</option><option value="1"<#if item.getDeptStatus()==1> selected</#if>>停用</option></select><span class="z-color-red">&nbsp;*</span></td>
</tr>
<tr>
<td>部门排序数:<span class="z-color-999">(必须是[0, 999999]范围的非负整数)</span></td>
<td><input name="deptSeq" class="z-input z-w300 ${zmr_color_class}" data-options="type:Integer;" value="#{item.getDeptSeq()}" maxlength="6"><span class="z-color-red">&nbsp;*</span></td>
</tr>
<tr>
<td>部门负责人:</td>
<td><input name="deptManager" class="z-input z-w130 zi-shadow-none" placeholder="请点按钮选择" value="#{item.getDeptManager()}" readonly><button type="button" class="z-button z-mg-l10 ${zmr_color_class}" onclick="doSelectorDialog(${item.getOrgId()});"><i class="z-font z-add"></i>选择操作员</button><button type="button" class="z-button z-mg-l3" onclick="doSelectorCallback('');">清除</button></td>
</tr>
<tr>
<td>部门副负责人:</td>
<td><input name="deptSubManager" class="z-input z-w130 zi-shadow-none" placeholder="请点按钮选择" value="#{item.getDeptSubManager()}" readonly><button type="button" class="z-button z-mg-l10 ${zmr_color_class}" onclick="doOperatorsSelectorDialog(${item.getOrgId()});"><i class="z-font z-add"></i>选择操作员</button><button type="button" class="z-button z-mg-l3" onclick="doOperatorsSelectorCallback('');">清除</button></td>
</tr>
<tr>
<td>部门描述:<span class="z-color-999">(不能超过100个汉字)</span></td>
<td><textarea name="deptDesc" class="z-textarea z-w300 z-h60 ${zmr_color_class}" maxlength="100">#{item.getDeptDesc()}</textarea></td>
</tr>
</table>
${zhiqim_manager_submit()}
</form>
${zhiqim_manager_content_end()}
@@ -0,0 +1,120 @@
<#-- 显示子部门,并递归显示下级子部门 -->
<#function showChildDept(self, parent)>
<tr id="ID#{self.self().getDeptId()}">
<td class="zi-pd-l10">
<#var level = self.self().getDeptLevel()/>
<#for i : 1..(level-1)>
<#if self.isLastNode(level-i)>
<i class="z-ico z-tree z-30 z-normal z-blank"></i>
<#else>
<i class="z-ico z-tree z-30 z-normal z-vertline"></i>
</#if>
</#for>
<#if self.isLastNode()>
<i class="z-ico z-tree z-30 z-normal z-lastnode"></i>
<#else>
<i class="z-ico z-tree z-30 z-normal z-node"></i>
</#if>
<i class="z-ico z-tree z-item z-mg-r3"></i>
<a href="javascript:void(0);" onclick="doSelectDept('#{self.self().getDeptId()}');">#{self.self().getDeptName()}</a>
</td>
</tr>
<#for child : self.children()>
${showChildDept(child, self)}
</#for>
</#function>
<script>
Z.onload(function()
{
doSelectDept(${sessionUser.getSelectedDeptId(tree.self().getDeptId())});
});
function doSelectDept(deptId)
{
var ajax = new Z.Ajax();
ajax.setContextPath("${context.getContextPath()}");
ajax.setClassName("ZmrDeptPresenter");
ajax.setMethodName("doShowDeptOperatorList");
ajax.addParam("deptId", deptId);
ajax.setFailureAlert();
ajax.setSuccess(function()
{
Z("#result").htmlc(this.responseText);
Z("#ID"+deptId).addClass("z-bg-gray").siblings().removeClass("z-bg-gray");
});
ajax.setLoading("result");
ajax.execute();
}
function doSelectorDialog(deptId)
{//显示部门操作员对话框
var dialog = new Z.Dialog();
dialog.title = "成员增加";
dialog.url = "deptOperatorSelector.htm?deptId="+deptId;
dialog.width = 392;
dialog.height = 423;
dialog.fixed = true;
dialog.execute();
}
function doSelectorCallback(deptId, operatorCodes)
{//增加部门操作员
var ajax = new Z.Ajax();
ajax.setContextPath("${context.getContextPath()}");
ajax.setClassName("ZmrDeptPresenter");
ajax.setMethodName("doAddDeptOperator");
ajax.addParam("deptId", deptId);
ajax.addParam("operatorCodes", operatorCodes);
ajax.setFailureAlert();
ajax.setSuccessReload();
ajax.setLoading(document);
ajax.execute();
}
function doDeleteOperatorDept(operatorCode, deptId)
{//删除操作员部门
var ajax = new Z.Ajax();
ajax.setClassName("ZmrOperatorPresenter");
ajax.setMethodName("doDeleteOperatorDept");
ajax.addParam("operatorCode", operatorCode);
ajax.addParam("deptId", deptId);
ajax.setFailureAlert();
ajax.setSuccessReload();
ajax.execute();
}
</script>
${zhiqim_manager_breadcrumb("部门成员")}
${zhiqim_manager_content()}
<#-- 导航 -->
<div class="z-tabnav-main z-mg-b20 ${zmr_color_class}">
<nav>
<ul>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/org.htm")><li onclick="Z.L.href('org.htm');">组织管理</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/orgRule.htm")><li onclick="Z.L.href('orgRule.htm');">组织权限</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/dept.htm")><li onclick="Z.L.href('dept.htm');">部门管理</li></#if>
<li class="z-active">部门成员</li>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/deptRule.htm")><li onclick="Z.L.href('deptRule.htm');">部门权限</li></#if>
</ul>
</nav>
</div>
<#-- 列表 -->
<table class="z-table">
<tr>
<td width="200" valign="top">
<table class="z-table zi-bd z-bg-white">
<tr id="ID#{tree.self().getDeptId()}" class="z-bg-gray">
<td class="zi-pd-t10 zi-pd-l10 z-bd-b <#if !tree.hasChildren()>zi-pd-b5</#if>"><i class="z-ico z-tree z-30 z-normal <#if tree.hasChildren()>z-root<#else>zi-h22</#if> z-mg-r3"></i><a href="javascript:void(0);" onclick="doSelectDept('#{tree.self().getDeptId()}');">#{tree.self().getDeptName()}</a></td>
</tr>
<#for child : tree.children()>
${showChildDept(child, tree)}
</#for>
</table>
</td>
<td width="10"></td>
<td id="result" width="*" valign="top"></td>
</tr>
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,49 @@
${Styles.htmlOverflowHidden()}
<script>
Z.onload(function()
{
Z(document.forms[0].operatorKey).focusEnd();
});
function doSelector()
{
var operatorCodes = Z.FM.getCheckeds("operatorCode");
parent.doSelectorCallback("${dept.getDeptId()}", operatorCodes);
}
</script>
<#-- 查询 -->
<div class="z-fixed z-t0 z-l0 z-w100p z-pd10 z-bg-gray">
<form method="post">
<input name="deptId" type="hidden" value="${dept.getDeptId()}">
<input name="operatorKey" class="z-float-left z-input z-w300 zi-h35 zi-bd-r-none" placeholder="操作员编码或名称" value="${operatorKey}" maxlength="20">
<button type="submit" class="z-float-left z-button z-w70 z-h35 zi-bd-rd0 ${zmr_color_class}"><i class="z-font z-query"></i></button>
</form>
</div>
<#-- 列表 -->
<div class="z-w100p z-pd10 z-overflow-auto" style="margin-top:55px;height:306px;">
<table class="z-table z-bordered z-pd5 z-text-center">
<tr class="z-h40 z-bg-gray">
<td width="50"><input type="checkbox" data-role="z-checkbox" data-class="z-blue" onclick="Z.FM.doSelectCheckBox('operatorCode')"></td>
<td width="90">操作员头像</td>
<td width="110">操作员编码</td>
<td width="*">操作员姓名</td>
</tr>
${zhiqim_manager_tr_no_record(operatorList, 4, "没有可选择的操作员")}
<#for item : operatorList>
<tr class="z-pointer" ${zhiqim_manager_tr_onmouse()} ${zhiqim_manager_tr_click_checkbox()}>
<td><input name="operatorCode" type="checkbox" data-role="z-checkbox" data-class="z-blue" value="${item.getOperatorCode()}"></td>
<td><img src="${sessionUser.getAvatarUrl(item.getOperatorAvatar(), 50)}" class="z-w50 z-h50 z-bd-rd50p"></td>
<td>${item.getOperatorCode()}</td>
<td>${item.getOperatorName()}</td>
</tr>
</#for>
</tale>
</div>
<#-- 操作 -->
<div class="z-fixed z-b0 z-l0 z-w100p z-h60 z-pd10 z-bg-gray z-text-center">
<button class="z-button z-large z-w150 ${zmr_color_class}" onclick="doSelector();">确定</button>
<button class="z-button z-large z-w70 z-mg-l10" onclick="parent.Z.Dialog.close(location.hash);">取消</button>
</div>
@@ -0,0 +1,81 @@
<#-- 显示子部门,并递归显示下级子部门 -->
<#function showChildDept(self, parent)>
<tr id="ID#{self.self().getDeptId()}">
<td class="zi-pd-l10">
<#var level = self.self().getDeptLevel()/>
<#for i : 1..(level-1)>
<#if self.isLastNode(level-i)>
<i class="z-ico z-tree z-30 z-normal z-blank"></i>
<#else>
<i class="z-ico z-tree z-30 z-normal z-vertline"></i>
</#if>
</#for>
<#if self.isLastNode()>
<i class="z-ico z-tree z-30 z-normal z-lastnode"></i>
<#else>
<i class="z-ico z-tree z-30 z-normal z-node"></i>
</#if>
<i class="z-ico z-tree z-item z-mg-r3"></i>
<a href="javascript:void(0);" onclick="doSelectDept('#{self.self().getDeptId()}');">#{self.self().getDeptName()}</a>
</td>
</tr>
<#for child : self.children()>
${showChildDept(child, self)}
</#for>
</#function>
<script>
Z.onload(function()
{
doSelectDept(${sessionUser.getSelectedDeptId(tree.self().getDeptId())});
});
function doSelectDept(deptId)
{
var ajax = new Z.Ajax();
ajax.setContextPath("${context.getContextPath()}");
ajax.setClassName("ZmrDeptPresenter");
ajax.setMethodName("doShowDeptRuleList");
ajax.addParam("deptId", deptId);
ajax.setFailureAlert();
ajax.setSuccess(function()
{
Z("#result").htmlc(this.responseText);
Z("#ID"+deptId).addClass("z-bg-gray").siblings().removeClass("z-bg-gray");
});
ajax.setLoading("result");
ajax.execute();
}
</script>
${zhiqim_manager_breadcrumb("部门权限")}
${zhiqim_manager_content()}
<div class="z-tabnav-main z-mg-b20 ${zmr_color_class}">
<nav>
<ul>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/org.htm")><li onclick="Z.L.href('org.htm');">组织管理</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/orgRule.htm")><li onclick="Z.L.href('orgRule.htm');">组织权限</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/dept.htm")><li onclick="Z.L.href('dept.htm');">部门管理</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/deptOperator.htm")><li onclick="Z.L.href('deptOperator.htm');">部门成员</li></#if>
<li class="z-active">部门权限</li>
</ul>
</nav>
</div>
<table class="z-table">
<tr>
<td width="200" valign="top">
<table class="z-table zi-bd z-bg-white">
<tr id="ID#{tree.self().getDeptId()}" class="z-bg-gray">
<td class="zi-pd-t10 zi-pd-l10 z-bd-b <#if !tree.hasChildren()>zi-pd-b5</#if>"><i class="z-ico z-tree z-30 z-normal <#if tree.hasChildren()>z-root<#else>zi-h22</#if> z-mg-r3"></i><a href="javascript:void(0);" onclick="doSelectDept('#{tree.self().getDeptId()}');">#{tree.self().getDeptName()}</a></td>
</tr>
<#for child : tree.children()>
${showChildDept(child, tree)}
</#for>
</table>
</td>
<td width="10"></td>
<td id="result" width="*" valign="top"></td>
</tr>
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,40 @@
${zhiqim_manager_breadcrumb("系统菜单")}
${zhiqim_manager_content()}
<div class="z-tabnav-main z-mg-b20 ${zmr_color_class}">
<nav>
<ul>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/menu.htm")><li onclick="Z.L.href('menu.htm');">系统菜单</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/avatar.htm")><li onclick="Z.L.href('avatar.htm');">系统头像</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/config.htm")><li onclick="Z.L.href('config.htm');">系统配置</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/cache.htm")><li onclick="Z.L.href('cache.htm');">系统缓存</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/param.htm")><li onclick="Z.L.href('param.htm');">系统参数</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/paramOperator.htm")><li onclick="Z.L.href('paramOperator.htm');">操作员参数</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/themeIndex.htm")><li onclick="Z.L.href('themeIndex.htm');">首页主题</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/themeMain.htm")><li onclick="Z.L.href('themeMain.htm');">主页主题</li></#if>
<li class="z-active">密钥生成</li>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/process.htm")><li onclick="Z.L.href('process.htm');">进程信息</li></#if>
</ul>
<div class="z-float-right z-mg-t10 z-mg-r5">
<form method="post" data-role="z-call-frame">
<button class="z-button z-w150 ${zmr_color_class}">重新生成密钥对</button>
</form>
</div>
</nav>
</div>
<table class="z-table z-bordered z-pd10 z-bg-white z-text-center">
<tr class="z-h40" bgcolor="${zmr_thead_bgcolor}">
<td width="80">密钥类型</td>
<td width="*" class="z-text-left">密钥值</td>
</tr>
<tr>
<td>公钥</td>
<td class="z-samp z-text-left">${publicKey}</td>
</tr>
<tr>
<td>私钥</td>
<td class="z-samp z-text-left">${privateKey}</td>
</tr>
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,5 @@
${zhiqim_manager_breadcrumb_name("欢迎光临["+context.getContextName()+"]")}
${zhiqim_manager_content()}
${zhiqim_manager_content_end()}
@@ -0,0 +1,108 @@
<#-- 显示子菜单,并递归显示下级子菜单 -->
<#function showChildMenu(self, parent)>
<table class="z-table z-bordered z-h30-tr zi-bd-t-none z-bg-white">
<tr class="z-pointer" ${zhiqim_manager_tr_onmouse()} ${zhiqim_manager_tr_click_radio()}>
<td width="50" class="z-text-center">
<#if ZmrAdminRule.check(request)>
<input name="menuCode" type="radio" data-role="z-radio" data-class="${zmr_color_class}" value="${self.self().getMenuCode()}">
</#if>
</td>
<td width="20%" class="zi-pd-l6">
<#var level = self.self().getMenuLevel()/>
<#for i : 1..(level-1)>
<#if self.isLastNode(level-i)>
<i class="z-ico z-tree z-30 z-normal z-blank"></i>
<#else>
<i class="z-ico z-tree z-30 z-normal z-vertline"></i>
</#if>
</#for>
<#if self.hasChildren()>
<a href="javascript:Zmr.treeExpand('${self.self().getMenuCode()}')"><i id="ico-${self.self().getMenuCode()}" class="z-ico z-tree z-30 z-normal <#if self.isLastNode()>z-mlastnode<#else>z-mnode</#if>"></i></a>
<#else>
<i class="z-ico z-tree z-30 z-normal <#if self.isLastNode()>z-lastnode<#else>z-node</#if>"></i>
</#if>
<i class="z-ico z-tree z-item z-mg-r3"></i>
#{self.self().getMenuName()}
</td>
<td width="80" class="zi-pd-l6">#{self.self().getMenuNameAbbr()}</td>
<td width="180" class="zi-pd-l6">#{self.self().getMenuCode()}</td>
<td width="60" class="z-text-center"><#if self.self().getMenuStatus()==0>正常<#else><span class="z-text-red">停用</span></#if></td>
<td width="60" class="z-text-center">#{self.self().getMenuLevel()}</td>
<td width="80" class="z-text-center"><#if self.self().getMenuType()==1>枝节点<#else>属性</#if></td>
<td width="60" class="z-text-center"><i class="z-font #{self.self().getMenuIcon()}"></i></td>
<td width="*" class="zi-pd-l6">#{self.self().getMenuUrl()}</td>
</tr>
</table>
<#if self.hasChildren()>
<div id="menu-${self.self().getMenuCode()}">
<#for child : self.children()>
${showChildMenu(child, self)}
</#for>
</div>
</#if>
</#function>
${zhiqim_manager_breadcrumb("系统菜单")}
${zhiqim_manager_content()}
<#-- 导航 -->
<div class="z-tabnav-main z-mg-b20 ${zmr_color_class}">
<nav>
<ul>
<li class="z-active">系统菜单</li>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/avatar.htm")><li onclick="Z.L.href('avatar.htm');">系统头像</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/config.htm")><li onclick="Z.L.href('config.htm');">系统配置</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/cache.htm")><li onclick="Z.L.href('cache.htm');">系统缓存</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/param.htm")><li onclick="Z.L.href('param.htm');">系统参数</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/paramOperator.htm")><li onclick="Z.L.href('paramOperator.htm');">操作员参数</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/themeIndex.htm")><li onclick="Z.L.href('themeIndex.htm');">首页主题</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/themeMain.htm")><li onclick="Z.L.href('themeMain.htm');">主页主题</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/keys.htm")><li onclick="Z.L.href('keys.htm');">密钥生成</li></#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/process.htm")><li onclick="Z.L.href('process.htm');">进程信息</li></#if>
</ul>
</nav>
</div>
<#-- 操作 -->
<#if ZmrAdminRule.check(request)>
<div class="z-float-right z-mg-b5">
<#if ZmrSuperAdminRule.check(request)>
<button class="z-button ${zmr_color_class}" onclick="Z.L.check('menuAdd.htm', 'menuCode');"><i class="z-font z-add"></i>增加系统菜单</button>
</#if>
<#if ZmrPathRule.check(request, "/"+zhiqim_manager+"/menuModify.htm")><button class="z-button ${zmr_color_class}" onclick="Z.L.check('menuModify.htm', 'menuCode');"><i class="z-font z-modify"></i>修改系统菜单</button></#if>
<#if ZmrSuperAdminRule.check(request)>
<button class="z-button z-red" onclick="Z.L.confirm('menuDelete.htm', '确定删除该菜单', 'menuCode', zCallFrame);"><i class="z-font z-delete"></i>删除系统菜单</button>
</#if>
</div>
</#if>
<#-- 列表 -->
<table class="z-table z-bordered z-h30-tr z-bg-white">
<tr class="zi-h40" bgcolor="${zmr_thead_bgcolor}">
<td width="50" class="z-text-center">选择</td>
<td width="20%" class="zi-pd-l6">菜单目录</td>
<td width="80" class="zi-pd-l6">菜单简称</td>
<td width="180" class="zi-pd-l6">菜单编码</td>
<td width="60" class="z-text-center">状态</td>
<td width="60" class="z-text-center">级别</td>
<td width="80" class="z-text-center">菜单类型</td>
<td width="60" class="z-text-center">图标</td>
<td width="*" class="zi-pd-l6">URL</td>
</tr>
<tr class="z-pointer" ${zhiqim_manager_tr_onmouse()} ${zhiqim_manager_tr_click_radio()}>
<td class="z-text-center"><input name="menuCode" type="radio" data-role="z-radio" data-class="${zmr_color_class}" value="${tree.self().getMenuCode()}"></td>
<td class="zi-pd-l6"><i class="z-ico z-tree z-30 z-normal z-root z-mg-r3"></i>系统功能根菜单</td>
<td class="zi-pd-l6">#{tree.self().getMenuNameAbbr()}</td>
<td class="zi-pd-l6">#{tree.self().getMenuCode()}</td>
<td class="z-text-center"><#if tree.self().getMenuStatus()==0>正常<#else>停用</#if></td>
<td class="z-text-center">#{tree.self().getMenuLevel()}</td>
<td class="z-text-center">根节点</td>
<td class="z-text-center"><i class="z-font #{tree.self().getMenuIcon()}"></i></td>
<td class="zi-pd-l6">#{tree.self().getMenuUrl()}</td>
</tr>
</table>
<#for child : tree.children()>
${showChildMenu(child, tree)}
</#for>
${zhiqim_manager_list(menuSize)}
${zhiqim_manager_content_end()}
@@ -0,0 +1,57 @@
${Scripts.onload("Z(document.theForm.menuCode).focusEnd();")}
${zhiqim_manager_history("menu.htm")}
${request.getValidateScript()}
${zhiqim_manager_breadcrumb_parent("menu.htm" "系统菜单" "增加菜单信息")}
${zhiqim_manager_content()}
<form name="theForm" action="menuInsert.htm" method="post" onsubmit="return validateForm(this);" data-role="z-call-frame">
<input name="parentCode" type="hidden" value="${parent.getMenuCode()}">
<input name="menuLevel" type="hidden" value="${parent.getMenuLevel()+1}">
<table class="z-table z-bordered z-h50-tr z-pd10 z-lh150p z-bg-white">
<tr class="zi-h40 z-bg-gray z-bold">
<td colspan="2">增加菜单信息</td>
</tr>
<tr>
<td width="40%">父级菜单:<span class="z-color-999">(请选择)</span></td>
<td width="*">${parent.getMenuCode()}${parent.getMenuName()}</td>
</tr>
<tr>
<td>菜单编码:<span class="z-color-999">(在父级菜单基础上增加编码值,编码值每段三位,如010</span></td>
<td><input name="menuCode" class="z-input z-w300 ${zmr_color_class}" maxlength="32" value="${parent.getMenuCode()}_"><span class="z-color-red">&nbsp;*</span></td>
</tr>
<tr>
<td>菜单名称:<span class="z-color-999">16位不定长字符)</span></td>
<td><input name="menuName" class="z-input z-w300 ${zmr_color_class}" maxlength="16"><span class="z-color-red">&nbsp;*</span></td>
</tr>
<#if parent.getMenuLevel() == 0>
<tr>
<td>菜单简称:<span class="z-color-999">3位不定长字符,仅一级菜单使用)</span></td>
<td><input name="menuNameAbbr" class="z-input z-w300 ${zmr_color_class}" maxlength="3"><span class="z-color-red">&nbsp;*</span></td>
</tr>
</#if>
<tr>
<td>菜单状态:<span class="z-color-999">(停用或正常)</span></td>
<td><select name="menuStatus" class="z-select z-w300" data-role="z-select" data-class="${zmr_color_class}"><option value="0">正常</option><option value="1">停用</option></select><span class="z-color-red">&nbsp;*</span></td>
</tr>
<tr>
<td>菜单类型:<span class="z-color-999">(枝节点或属性)</span></td>
<td><select name="menuType" class="z-select z-w300" data-role="z-select" data-class="${zmr_color_class}"><option value="1">枝节点</option><option value="2">属性</option></select><span class="z-color-red">&nbsp;*</span></td>
</tr>
<#if parent.getMenuLevel() lte 1>
<tr>
<td>菜单图标:<span class="z-color-999">(在z-font中选择字体图标,仅一二级菜单使用)</span></td>
<td><input name="menuIcon" class="z-input z-w300 ${zmr_color_class}" maxlength="32"></td>
</tr>
</#if>
<tr>
<td>菜单URL<span class="z-color-999">(菜单权限对应的URL,多个用逗号隔开,100字符以内)</span></td>
<td><input name="menuUrl" class="z-input z-w300 ${zmr_color_class}" maxlength="100"></td>
</tr>
<tr>
<td>菜单描述:<span class="z-color-999">(用一句简短的句子描述菜单,100字以内)</span></td>
<td><textarea name="menuDesc" class="z-textarea z-w300 z-h80 ${zmr_color_class}" maxlength="100"></textarea></td>
</tr>
</table>
${zhiqim_manager_submit()}
</form>
${zhiqim_manager_content_end()}
@@ -0,0 +1,60 @@
${zhiqim_manager_history("menu.htm")}
${request.getValidateScript()}
${zhiqim_manager_breadcrumb_parent("menu.htm" "系统菜单" "修改本菜单信息")}
${zhiqim_manager_content()}
${zhiqim_manager_title("修改 ["+item.getMenuName()+"] 菜单")}
<form name="theForm" action="menuUpdate.htm" method="post" onsubmit="return validateForm(this);" data-role="z-call-frame">
<input name="parentCode" type="hidden" value="${item.getParentCode()}">
<input name="menuCode" type="hidden" value="${item.getMenuCode()}">
<input name="menuLevel" type="hidden" value="${item.getMenuLevel()}">
<table class="z-table z-bordered z-h50-tr z-pd10 z-bg-white">
<tr>
<td width="40%">菜单编码:</td>
<td width="*">${item.getMenuCode()}</td>
</tr>
<tr>
<td>菜单名称:<span class="z-color-999">16位不定长字符)</span></td>
<td><input name="menuName" class="z-input z-w300 ${zmr_color_class}" value="${item.getMenuName()}" maxlength="16"><span class="z-color-red">&nbsp;*</span></td>
</tr>
<#if item.getMenuLevel() == 1>
<tr>
<td>菜单简称:<span class="z-color-999">3位不定长字符,仅一级菜单使用)</span></td>
<td><input name="menuNameAbbr" class="z-input z-w300 ${zmr_color_class}" value="${item.getMenuNameAbbr()}" maxlength="3"><span class="z-color-red">&nbsp;*</span></td>
</tr>
<#else>
<input name="menuNameAbbr" type="hidden" value="${item.getMenuNameAbbr()}">
</#if>
<tr>
<td>菜单状态:<span class="z-color-999">(正常|停用)</span></td>
<td>
<select name="menuStatus" class="z-select z-w300" data-role="z-select" data-class="${zmr_color_class}">
<option value="0" <#if item.getMenuStatus() == 0>selected</#if>>正常</option>
<option value="1" <#if item.getMenuStatus() == 1>selected</#if>>停用</option>
</select><span class="z-color-red">&nbsp;*</span>
</td>
</tr>
<tr>
<td>菜单类型:<span class="z-color-999">(枝节点 | 属性)</span></td>
<td><select name="menuType" class="z-select z-w300" data-role="z-select" data-class="${zmr_color_class}"><option value="1"<#if item.getMenuType() == 1> selected</#if>>枝节点</option><option value="2"<#if item.getMenuType() == 2> selected</#if>>属性</option></select><span class="z-color-red">&nbsp;*</span></td>
</tr>
<#if item.getMenuLevel() lte 2>
<tr>
<td>菜单图标:<span class="z-color-999">(在z-font中选择字体图标,仅一二级菜单使用)</span></td>
<td><input name="menuIcon" class="z-input z-w300 ${zmr_color_class}" value="#{item.getMenuIcon()}" maxlength="32"></td>
</tr>
<#else>
<input name="menuIcon" type="hidden" value="${item.getMenuIcon()}">
</#if>
<tr>
<td>菜单URL<span class="z-color-999">(菜单权限对应的URL,多个用逗号隔开,100字符以内)</span></td>
<td><input name="menuUrl" class="z-input z-w300 ${zmr_color_class}" value="#{item.getMenuUrl()}" maxlength="100"></td>
</tr>
<tr>
<td>菜单描述:<span class="z-color-999">(用一句简短的句子描述菜单,100字以内)</span></td>
<td><textarea name="menuDesc" class="z-textarea z-w300 z-h80 ${zmr_color_class}" maxlength="100">#{item.getMenuDesc()}</textarea></td>
</tr>
</table>
${zhiqim_manager_submit()}
</form>
${zhiqim_manager_content_end()}

Some files were not shown because too many files have changed in this diff Show More