FineReport中什么自定义登陆界面

通常情况下,进入Windows界面之前都有一个登录过程,如何在登录前让系统执行脚本呢?下面介绍一种方法。

经典重现,Linux下使用Windows 2000登陆界面主题。

在登录平台时,不希望使用FR默认的内置登录界面,想通过自定义登录界面实现登录操作,内置登录界面如下图:

威尼斯手机棋牌 1预览界面.png威尼斯手机棋牌 2效果显示

1.打开组策略,在Run(运行)中输入GREDIT.MSC,点击确认。

威尼斯手机棋牌 3

威尼斯手机棋牌 4

从图中可以看出这次自定义View的效果。具体功能如下:

Win10登录界面的名字如何取消?当我们在锁屏界面按下回车或者点击鼠标时,就会来到Win10的登录页面,该界面会将我们的名字赤裸裸地显示出来,如果你不想让其他用你电脑的陌生人看到你的名字,那么你可以按照以下的方法来取消Win10登录界面的名字显示。

威尼斯手机棋牌 5

威尼斯手机棋牌 6

 

  • 设置头部文字的字体大小、字体颜色、文字内容

  • 设置输入框的字体大小、字体颜色、文字内容、提示文字

威尼斯手机棋牌 7

2.依次点击Computer Configuration -> Windows Settings ->
Scripts(Startup/Shutdown)

登录界面,获取到用户名和密码的值,发送到报表系统,报表服务带着这两个参数访问认证地址进行认证。

一、
第一步先新建一个类名为EditTextPlus继承FrameLayout的文件,因为我们要实现在布局文件中能是用自己的属性,所以我们还要在values目录下新建attrs.xml文件(用于添加自定义的属性)

操作如下:

威尼斯手机棋牌 8

威尼斯手机棋牌 ,自定义登录界面

威尼斯手机棋牌 9第1步.png

1、在微软小娜中搜索并打开regedit。

3.在右侧双击Stratup,出现如图弹窗,可在此添加cmd或者PowerShell脚本。

登录界面设置

二、在 attrs.xml
文件中添加如下属性(其中除了字体的基本属性之外,还包括了输入框的输入类型,键盘的类型等)

威尼斯手机棋牌 10

威尼斯手机棋牌 11

自定义html登录页面:命名为login.html,并保存在%FR_HOME%\WebReport下,代码如下:

<?xml version="1.0" encoding="utf-8"?><resources> <declare-styleable name="EditTextPlus"> <attr name="head_title_text" format="string" /> <attr name="head_titile_text_size" format="dimension" /> <attr name="head_title_text_color" format="color" /> <attr name="edit_hint_text" format="string" /> <attr name="edit_text_size" format="dimension" /> <attr name="edit_text_color" format="color" /> <attr name="edit_input_type" format="enum"> <enum name="Text" value="0" /> <enum name="Phone" value="1" /> <enum name="Password" value="2" /> <enum name="Number" value="3" /> </attr> <!-- 键盘类型 --> <attr name="edit_editor_option" format="enum"> <enum name="IME_ACTION_NONE" value="0" /> <enum name="IME_ACTION_DONE" value="1" /> <enum name="IME_ACTION_GO" value="2" /> <enum name="IME_ACTION_NEXT" value="3" /> <enum name="IME_ACTION_PREVIOUS" value="4" /> <enum name="IME_ACTION_SEARCH" value="5" /> <enum name="IME_ACTION_SEND" value="6" /> <enum name="IME_ACTION_UNSPECIFIED" value="7" /> </attr> </declare-styleable></resources>

2、定位到以下位置:\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\,找到名为dontdisplaylastusername的键值,双击它,然后将它的数值数据改为1。

4.点击确认

<html>    
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
<script type="text/javascript" src="ReportServer?op=emb&resource=finereport.js"></script>    
<script type="text/javascript">    
function doSubmit() {    
    var username = FR.cjkEncode(document.getElementById("username").value); //获取输入的用户名    
    var password = FR.cjkEncode(document.getElementById("password").value);  //获取输入的参数    
jQuery.ajax({    
     url:"http://localhost:8075/WebReport/ReportServer?op=fs_load&cmd=sso",//单点登录的管理平台报表服务器    
     dataType:"jsonp",//跨域采用jsonp方式    
     data:{"fr_username":username,"fr_password":password},//获取用户名密码    
     jsonp:"callback",    
     timeout:5000,//超时时间(单位:毫秒)    
     success:function(data) {    
            if (data.status === "success") {  
window.location=data.url;//认证成功跳转页面,因为ajax不支持重定向所有需要跳转的设置  
                  //登录成功       
            } else if (data.status === "fail"){    
                 alert("用户名或密码错误");//登录失败(用户名或密码错误)    
            }    
     },    
     error:function(){    
           alert("超时或服务器其他错误");// 登录失败(超时或服务器其他错误)    
     }    
});  
}    
</script>    
</head>    
<body>    
<p>请登录</p>    
<form name="login" method="POST">    
    <p>    
        用户名:    
        <input id="username" type="text" />    
    </p>    
    <p>    
        密 码:    
        <input id="password" type="password" />    
    </p>    
    <input type="button" value="登录" onclick="doSubmit()"/>    
</form>    
</body>    
</html>  

那么添加了这些属性之后要如何使用呢?如下图所示:

威尼斯手机棋牌 12

重启,在下次登录Windows界面前,系统会自动执行所添加的脚本。

Dosubmit()是主要的逻辑判断,实现的是将对应的值传给报表服务的逻辑实现过程。

威尼斯手机棋牌 13使用自定义属性.png

3、将鼠标光标放在左侧树状列表的System项上,单击右键,选择新建-DWORD(32位)值,并将该值命名为:DontDisplayLockedUserID。

 

调用登录界面

其中最重要的是要使用下面那句话,才能使用自定义的属性。(xmlns:app中的app命名可以任意)

威尼斯手机棋牌 14

登录系统,选择管理系统>外观配置,在登录页选项中选择设置登录网页,并输入自定义登录页面的路径:login.html,如下图所示:

 xmlns:app="http://schemas.android.com/apk/res-auto"

4、双击我们刚刚新建的名为DontDisplayLockedUserID的DWORD(32位)值,你将看到一个编辑DWORD(32位)值的窗口。在这个窗口中,将DontDisplayLockedUserID的数值数据改为3。

威尼斯手机棋牌 15 

三、在布局文件中已经使用了自定义的属性,那么我们现在要做的就是如何解析相关属性。所以我们回到EditTextPlus类中。

威尼斯手机棋牌 16

总结

威尼斯手机棋牌 17声明的成员变量.png

5、修改完成后,关闭注册表编辑器,在开始菜单中点击你的头像,再点击锁定,你将看到锁屏界面。

比如说若用户有自己的系统,将FR继承到自己已有系统中,该系统有自己的登录界面,希望登录自己系统的同时也登录报表(即将输入的用户名密码也发送到报表服务进行认证),从而访问报表时不需要再次登录即单点登录,步骤如下:

上图为类中声明的成员变量。

威尼斯手机棋牌 18

1、找到您系统登录页面如login.jsp;

  • 在解析的时候我们通过 AttributeSet 来获得 TypeArray(注意: 必须要调用
    recycle 方法进行回收)

  • 不同类型的属性使用不同的方法来获得,而且必须设置默认值,在用户没有设置属性的时候,使用默认值

  • 其中通过 typedArray.getDimension
    方法得到的参数单位为像素。在使用的时候要注意单位的转化,所以在设置默认值得时候,将
    sp 转化为 px

  • edit_editor_option 和 edit_input_type 为枚举类型,在 attrs.xml
    文件中声明了每个枚举对应的 value

6、按回车键,或者使用鼠标点击屏幕,你将看到Win10登录界面。这时我们可以看到,我们的名字已经显示为“解锁电脑”。

2、在login.jsp页面head中引入finereport.js;

具体解析自定义属性的代码如下:

private void initAttr(AttributeSet attrs) { Drawable background = getBackground(); //当没有设置background时使用默认的background if (null == background) { setBackgroundResource(R.drawable.drawable_default_edittext_plus); } TypedArray typedArray = mContext.obtainStyledAttributes(attrs, R.styleable.EditTextPlus); // mEditTextSize = typedArray.getDimension(R.styleable.EditTextPlus_edit_text_size, sp2px(mEditTextSize)); mEditHintText = typedArray.getString(R.styleable.EditTextPlus_edit_hint_text); if (TextUtils.isEmpty(mEditHintText)) { mEditHintText = ""; } mEditTextColor = typedArray.getColor(R.styleable.EditTextPlus_edit_text_color, ContextCompat.getColor(mContext, R.color.EditTextPlusDefaultTextColor)); mInputType = typedArray.getInt(R.styleable.EditTextPlus_edit_input_type, mInputType); mEditorOption = typedArray.getInt(R.styleable.EditTextPlus_edit_editor_option, mEditorOption); // mHeadTextSize = typedArray.getDimension(R.styleable.EditTextPlus_head_titile_text_size, sp2px(mHeadTextSize)); mHeadText = typedArray.getString(R.styleable.EditTextPlus_head_title_text); if (TextUtils.isEmpty(mHeadText)) { mHeadText = "未设置"; } mHeadTextColor = typedArray.getColor(R.styleable.EditTextPlus_head_title_text_color, mEditTextColor); // typedArray.recycle();}

威尼斯手机棋牌 19

3、在login.jsp页面JavaScript中定义function如dosubmit,在dosubmit中获取到输入的用户名密码,并通过iframe方式或者ajax方式进行认证。

获取属性方法的调用顺序如下

威尼斯手机棋牌 20构造方法以及initAttr
和 initView方法.png

  • 在一个参数构造方法中调用两个参数的构造方法,在两个参数的构造方法中调用三个参数的构造方法。这样子所有的构造方法都会经过三个参数的构造方法

  • 在构造方法中填充布局,调用 initAttr 得到各个属性的值,再调用
    initView 设置对应属性的值。

四、既然设置自定义属性的值,并且属性都设置到相应的位置。最后一个问题,就是如何将自定义View中的事件传输出去,如:删除按钮的点击事件。

  • 在类中声明接口

public interface OnDeleteListener { void onDelete();}
  • 在类中声明成员变量 onDeleteListener

威尼斯手机棋牌 21声明接口的成员变量.png

  • 声明变量的 set 方法

    public void setOnDeleteListener(OnDeleteListener onDeleteListener) { this.onDeleteListener = onDeleteListener; }
    
  • 在 initView 中设置点击事件,并判断是否声明的 onDeleteListener
    是否为空,不为空则调用接口中的方法

     ivDelete.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { etInput.setText; if (mHasDeleteAnimator) { //为了实现在点击删除时,控件左右抖动的效果 EditTextPlus.this.animate().translationX.setInterpolator(new CycleInterpolator.setDuration.start(); } if (null != onDeleteListener) { onDeleteListener.onDelete;
    
  • 使用该接口的时候就相当于设置系统控件的点击事件一样,调用
    setOnDeleteListener 方法。

威尼斯手机棋牌 22自定义接口的使用.png

GitHub地址: EditextDemo

7、要登录Win10,你需要手动输入用户名和密码或者PIN,需要注意的是,这个用户名以C:\Users中的为准。

4、在FineReport平台系统中设置自定义登录页面地址为您系统的登录地址。

如果你不清楚你当前的用户名,那么可以在微软小娜中搜索并打开CMD查看(不要以管理员身份打开),以小编的电脑为例,打开命令提示符后,里面显示的是C:\Users\Lenovo》,

若是OA系统或者报表系统和项目系统不再同一个服务器上,可以进行ajax跨域异步单点登录。

威尼斯手机棋牌 23

Session传值

8、那么小编当前的用户名就是Lenovo,在登录Win10时,将Lenovo填入用户名的输入框即可。

对于java系统来说,可将用户名与密码放在session中,把报表集成在同一环境下面,报表可自动获取到用户名和密码的值进行验证。

如何恢复?

还原默认登录界面

要将Win10登陆界面恢复为显示姓名也非常简单,只需再次来到注册表,然后双击名为dontdisplaylastusername的键值,将它的数值数据改为0即可。

如果在决策系统修改了登录界面后,希望还原成系统默认登录界面,应该如何实现呢?

威尼斯手机棋牌 24 

1)打开安装目录%FR_HOME%\WebReport\WEB-INF\resources,找到fsconfig.xml

关于取消Win10登录界面名字的操作方法就给大家讲解到这里了,不希望Win10登录界面会显示名字的伙伴,可以按照教程来取消,大家可以随时取消或恢复,全看自己的意愿。

威尼斯手机棋牌 25
 

【编辑推荐】

2)删除loginUrl属性

右击fsconfig.xml文件,选择编辑器打开,删除文件中的loginUrl属性,如下,删除login.htm:

威尼斯手机棋牌 26

 

此时请务必关闭设计器,重新开启,再次进入数据决策系统,即可回到默认的登录界面。

还原到默认的登录界面后,如果再需要设置登录界面,可以用管理员账户登录,进行设置即可。

相关文章