修复:编辑用户界面,设置用户有效期时,选择日期对话框显示不正常。

Issue: 213
dev
Apex Liu 2020-06-15 02:33:54 +08:00
parent ed01ae7328
commit c264b6c753
7 changed files with 89 additions and 2305 deletions

View File

@ -752,6 +752,7 @@ $app.create_dlg_edit_user = function () {
dialog: $('#' + dlg.dom_id) dialog: $('#' + dlg.dom_id)
, dlg_title: $('#' + dlg.dom_id + ' [data-field="dlg-title"]') , dlg_title: $('#' + dlg.dom_id + ' [data-field="dlg-title"]')
, select_role: $('#edit-user-role') , select_role: $('#edit-user-role')
, selected_role: $('#' + dlg.dom_id + ' span[data-selected-role]')
, edit_username: $('#edit-user-username') , edit_username: $('#edit-user-username')
, edit_surname: $('#edit-user-surname') , edit_surname: $('#edit-user-surname')
, edit_email: $('#edit-user-email') , edit_email: $('#edit-user-email')
@ -782,11 +783,8 @@ $app.create_dlg_edit_user = function () {
_ret.push('<li><a href="javascript:;" data-tp-selector="' + role.id + '"><i class="fa fa-user-circle fa-fw"></i> ' + role.name + '</a></li>'); _ret.push('<li><a href="javascript:;" data-tp-selector="' + role.id + '"><i class="fa fa-user-circle fa-fw"></i> ' + role.name + '</a></li>');
}); });
_ret.push('</ul>'); _ret.push('</ul>');
dlg.dom.edit_valid_from.datetimepicker({format: "yyyy-mm-dd h:ii", autoclose: 1, todayHighlight: 1});
dlg.dom.edit_valid_to.datetimepicker({format: "yyyy-mm-dd h:ii", autoclose: 1, todayHighlight: 1});
dlg.dom.select_role.after($(_ret.join('')));
dlg.dom.selected_role = $('#' + dlg.dom_id + ' span[data-selected-role]'); dlg.dom.select_role.after($(_ret.join('')));
// 绑定角色选择框事件 // 绑定角色选择框事件
$('#' + dlg.dom_id + ' li a[data-tp-selector]').click(function () { $('#' + dlg.dom_id + ' li a[data-tp-selector]').click(function () {
@ -806,6 +804,26 @@ $app.create_dlg_edit_user = function () {
dlg.dom.selected_role.text(name); dlg.dom.selected_role.text(name);
}); });
// 时间选择框
dlg.dom.edit_valid_from.datetimepicker({format: "yyyy-mm-dd hh:ii", autoclose: true, todayHighlight: true, todayBtn: true, language: "zh-CN"});
dlg.dom.edit_valid_to.datetimepicker({format: "yyyy-mm-dd hh:ii", autoclose: true, todayHighlight: true, todayBtn: true, language: "zh-CN"});
dlg.dom.edit_valid_from.on('changeDate', function(ev){
var start_time = dlg.dom.edit_valid_from.find('input').val();
if(start_time === '')
dlg.dom.edit_valid_to.datetimepicker('setStartDate', '1000-01-01 00:00');
else
dlg.dom.edit_valid_to.datetimepicker('setStartDate', start_time);
});
dlg.dom.edit_valid_to.on('changeDate', function(ev){
var end_time = dlg.dom.edit_valid_to.find('input').val();
if(end_time === '')
dlg.dom.edit_valid_from.datetimepicker('setEndDate', '9999-12-12 00:00');
else
dlg.dom.edit_valid_from.datetimepicker('setEndDate', end_time);
});
dlg.dom.btn_auth_use_sys_config.click(function () { dlg.dom.btn_auth_use_sys_config.click(function () {
if ($(this).hasClass('tp-selected')) { if ($(this).hasClass('tp-selected')) {
// $(this).removeClass('tp-selected'); // $(this).removeClass('tp-selected');
@ -913,16 +931,22 @@ $app.create_dlg_edit_user = function () {
dlg.dom.edit_qq.val(user.qq); dlg.dom.edit_qq.val(user.qq);
dlg.dom.edit_wechat.val(user.wechat); dlg.dom.edit_wechat.val(user.wechat);
dlg.dom.edit_desc.val(user.desc); dlg.dom.edit_desc.val(user.desc);
if (user.valid_from == 0 ) { if (user.valid_from === 0 ) {
dlg.dom.edit_valid_from.find('input').val(''); dlg.dom.edit_valid_from.find('input').val('');
dlg.dom.edit_valid_to.datetimepicker('setStartDate', '9999-12-12 00:00');
}else{ }else{
dlg.dom.edit_valid_from.find('input').val(tp_format_datetime(tp_utc2local(user.valid_from), 'yyyy-MM-dd HH:mm')); var start_time = tp_format_datetime(user.valid_from, 'yyyy-MM-dd HH:mm');
dlg.dom.edit_valid_from.find('input').val(start_time);
dlg.dom.edit_valid_to.datetimepicker('setStartDate', start_time);
} }
if (user.valid_to == 0 ) { if (user.valid_to === 0 ) {
dlg.dom.edit_valid_to.find('input').val(''); dlg.dom.edit_valid_to.find('input').val('');
dlg.dom.edit_valid_from.datetimepicker('setEndDate', '1000-01-01 00:00');
}else{ }else{
dlg.dom.edit_valid_to.find('input').val(tp_format_datetime(tp_utc2local(user.valid_to), 'yyyy-MM-dd HH:mm')); var end_time = tp_format_datetime(user.valid_to, 'yyyy-MM-dd HH:mm');
} dlg.dom.edit_valid_to.find('input').val(end_time);
dlg.dom.edit_valid_from.datetimepicker('setEndDate', end_time);
}
} }
dlg.dom.selected_role.text(role_name); dlg.dom.selected_role.text(role_name);

View File

@ -1,418 +0,0 @@
/*!
* Datetimepicker for Bootstrap
*
* Copyright 2012 Stefan Petre
* Improvements by Andrew Rowls
* Licensed under the Apache License v2.0
* http://www.apache.org/licenses/LICENSE-2.0
*
*/
.datetimepicker {
padding: 4px;
margin-top: 1px;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
direction: ltr;
}
.datetimepicker-inline {
width: 220px;
}
.datetimepicker.datetimepicker-rtl {
direction: rtl;
}
.datetimepicker.datetimepicker-rtl table tr td span {
float: right;
}
.datetimepicker-dropdown, .datetimepicker-dropdown-left {
top: 0;
left: 0;
}
[class*=" datetimepicker-dropdown"]:before {
content: '';
display: inline-block;
border-left: 7px solid transparent;
border-right: 7px solid transparent;
border-bottom: 7px solid #cccccc;
border-bottom-color: rgba(0, 0, 0, 0.2);
position: absolute;
}
[class*=" datetimepicker-dropdown"]:after {
content: '';
display: inline-block;
border-left: 6px solid transparent;
border-right: 6px solid transparent;
border-bottom: 6px solid #ffffff;
position: absolute;
}
[class*=" datetimepicker-dropdown-top"]:before {
content: '';
display: inline-block;
border-left: 7px solid transparent;
border-right: 7px solid transparent;
border-top: 7px solid #cccccc;
border-top-color: rgba(0, 0, 0, 0.2);
border-bottom: 0;
}
[class*=" datetimepicker-dropdown-top"]:after {
content: '';
display: inline-block;
border-left: 6px solid transparent;
border-right: 6px solid transparent;
border-top: 6px solid #ffffff;
border-bottom: 0;
}
.datetimepicker-dropdown-bottom-left:before {
top: -7px;
right: 6px;
}
.datetimepicker-dropdown-bottom-left:after {
top: -6px;
right: 7px;
}
.datetimepicker-dropdown-bottom-right:before {
top: -7px;
left: 6px;
}
.datetimepicker-dropdown-bottom-right:after {
top: -6px;
left: 7px;
}
.datetimepicker-dropdown-top-left:before {
bottom: -7px;
right: 6px;
}
.datetimepicker-dropdown-top-left:after {
bottom: -6px;
right: 7px;
}
.datetimepicker-dropdown-top-right:before {
bottom: -7px;
left: 6px;
}
.datetimepicker-dropdown-top-right:after {
bottom: -6px;
left: 7px;
}
.datetimepicker > div {
display: none;
}
.datetimepicker.minutes div.datetimepicker-minutes {
display: block;
}
.datetimepicker.hours div.datetimepicker-hours {
display: block;
}
.datetimepicker.days div.datetimepicker-days {
display: block;
}
.datetimepicker.months div.datetimepicker-months {
display: block;
}
.datetimepicker.years div.datetimepicker-years {
display: block;
}
.datetimepicker table {
margin: 0;
}
.datetimepicker td,
.datetimepicker th {
text-align: center;
width: 20px;
height: 20px;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
border: none;
}
.table-striped .datetimepicker table tr td,
.table-striped .datetimepicker table tr th {
background-color: transparent;
}
.datetimepicker table tr td.minute:hover {
background: #eeeeee;
cursor: pointer;
}
.datetimepicker table tr td.hour:hover {
background: #eeeeee;
cursor: pointer;
}
.datetimepicker table tr td.day:hover {
background: #eeeeee;
cursor: pointer;
}
.datetimepicker table tr td.old,
.datetimepicker table tr td.new {
color: #999999;
}
.datetimepicker table tr td.disabled,
.datetimepicker table tr td.disabled:hover {
background: none;
color: #999999;
cursor: default;
}
.datetimepicker table tr td.today,
.datetimepicker table tr td.today:hover,
.datetimepicker table tr td.today.disabled,
.datetimepicker table tr td.today.disabled:hover {
background-color: #fde19a;
background-image: -moz-linear-gradient(top, #fdd49a, #fdf59a);
background-image: -ms-linear-gradient(top, #fdd49a, #fdf59a);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a));
background-image: -webkit-linear-gradient(top, #fdd49a, #fdf59a);
background-image: -o-linear-gradient(top, #fdd49a, #fdf59a);
background-image: linear-gradient(top, #fdd49a, #fdf59a);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);
border-color: #fdf59a #fdf59a #fbed50;
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
}
.datetimepicker table tr td.today:hover,
.datetimepicker table tr td.today:hover:hover,
.datetimepicker table tr td.today.disabled:hover,
.datetimepicker table tr td.today.disabled:hover:hover,
.datetimepicker table tr td.today:active,
.datetimepicker table tr td.today:hover:active,
.datetimepicker table tr td.today.disabled:active,
.datetimepicker table tr td.today.disabled:hover:active,
.datetimepicker table tr td.today.active,
.datetimepicker table tr td.today:hover.active,
.datetimepicker table tr td.today.disabled.active,
.datetimepicker table tr td.today.disabled:hover.active,
.datetimepicker table tr td.today.disabled,
.datetimepicker table tr td.today:hover.disabled,
.datetimepicker table tr td.today.disabled.disabled,
.datetimepicker table tr td.today.disabled:hover.disabled,
.datetimepicker table tr td.today[disabled],
.datetimepicker table tr td.today:hover[disabled],
.datetimepicker table tr td.today.disabled[disabled],
.datetimepicker table tr td.today.disabled:hover[disabled] {
background-color: #fdf59a;
}
.datetimepicker table tr td.today:active,
.datetimepicker table tr td.today:hover:active,
.datetimepicker table tr td.today.disabled:active,
.datetimepicker table tr td.today.disabled:hover:active,
.datetimepicker table tr td.today.active,
.datetimepicker table tr td.today:hover.active,
.datetimepicker table tr td.today.disabled.active,
.datetimepicker table tr td.today.disabled:hover.active {
background-color: #fbf069;
}
.datetimepicker table tr td.active,
.datetimepicker table tr td.active:hover,
.datetimepicker table tr td.active.disabled,
.datetimepicker table tr td.active.disabled:hover {
background-color: #006dcc;
background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
background-image: -o-linear-gradient(top, #0088cc, #0044cc);
background-image: linear-gradient(top, #0088cc, #0044cc);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
border-color: #0044cc #0044cc #002a80;
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
color: #ffffff;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
}
.datetimepicker table tr td.active:hover,
.datetimepicker table tr td.active:hover:hover,
.datetimepicker table tr td.active.disabled:hover,
.datetimepicker table tr td.active.disabled:hover:hover,
.datetimepicker table tr td.active:active,
.datetimepicker table tr td.active:hover:active,
.datetimepicker table tr td.active.disabled:active,
.datetimepicker table tr td.active.disabled:hover:active,
.datetimepicker table tr td.active.active,
.datetimepicker table tr td.active:hover.active,
.datetimepicker table tr td.active.disabled.active,
.datetimepicker table tr td.active.disabled:hover.active,
.datetimepicker table tr td.active.disabled,
.datetimepicker table tr td.active:hover.disabled,
.datetimepicker table tr td.active.disabled.disabled,
.datetimepicker table tr td.active.disabled:hover.disabled,
.datetimepicker table tr td.active[disabled],
.datetimepicker table tr td.active:hover[disabled],
.datetimepicker table tr td.active.disabled[disabled],
.datetimepicker table tr td.active.disabled:hover[disabled] {
background-color: #0044cc;
}
.datetimepicker table tr td.active:active,
.datetimepicker table tr td.active:hover:active,
.datetimepicker table tr td.active.disabled:active,
.datetimepicker table tr td.active.disabled:hover:active,
.datetimepicker table tr td.active.active,
.datetimepicker table tr td.active:hover.active,
.datetimepicker table tr td.active.disabled.active,
.datetimepicker table tr td.active.disabled:hover.active {
background-color: #003399;
}
.datetimepicker table tr td span {
display: block;
width: 23%;
height: 54px;
line-height: 54px;
float: left;
margin: 1%;
cursor: pointer;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
}
.datetimepicker .datetimepicker-hours span {
height: 26px;
line-height: 26px;
}
.datetimepicker .datetimepicker-hours table tr td span.hour_am,
.datetimepicker .datetimepicker-hours table tr td span.hour_pm {
width: 14.6%;
}
.datetimepicker .datetimepicker-hours fieldset legend,
.datetimepicker .datetimepicker-minutes fieldset legend {
margin-bottom: inherit;
line-height: 30px;
}
.datetimepicker .datetimepicker-minutes span {
height: 26px;
line-height: 26px;
}
.datetimepicker table tr td span:hover {
background: #eeeeee;
}
.datetimepicker table tr td span.disabled,
.datetimepicker table tr td span.disabled:hover {
background: none;
color: #999999;
cursor: default;
}
.datetimepicker table tr td span.active,
.datetimepicker table tr td span.active:hover,
.datetimepicker table tr td span.active.disabled,
.datetimepicker table tr td span.active.disabled:hover {
background-color: #006dcc;
background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
background-image: -o-linear-gradient(top, #0088cc, #0044cc);
background-image: linear-gradient(top, #0088cc, #0044cc);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
border-color: #0044cc #0044cc #002a80;
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
color: #ffffff;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
}
.datetimepicker table tr td span.active:hover,
.datetimepicker table tr td span.active:hover:hover,
.datetimepicker table tr td span.active.disabled:hover,
.datetimepicker table tr td span.active.disabled:hover:hover,
.datetimepicker table tr td span.active:active,
.datetimepicker table tr td span.active:hover:active,
.datetimepicker table tr td span.active.disabled:active,
.datetimepicker table tr td span.active.disabled:hover:active,
.datetimepicker table tr td span.active.active,
.datetimepicker table tr td span.active:hover.active,
.datetimepicker table tr td span.active.disabled.active,
.datetimepicker table tr td span.active.disabled:hover.active,
.datetimepicker table tr td span.active.disabled,
.datetimepicker table tr td span.active:hover.disabled,
.datetimepicker table tr td span.active.disabled.disabled,
.datetimepicker table tr td span.active.disabled:hover.disabled,
.datetimepicker table tr td span.active[disabled],
.datetimepicker table tr td span.active:hover[disabled],
.datetimepicker table tr td span.active.disabled[disabled],
.datetimepicker table tr td span.active.disabled:hover[disabled] {
background-color: #0044cc;
}
.datetimepicker table tr td span.active:active,
.datetimepicker table tr td span.active:hover:active,
.datetimepicker table tr td span.active.disabled:active,
.datetimepicker table tr td span.active.disabled:hover:active,
.datetimepicker table tr td span.active.active,
.datetimepicker table tr td span.active:hover.active,
.datetimepicker table tr td span.active.disabled.active,
.datetimepicker table tr td span.active.disabled:hover.active {
background-color: #003399;
}
.datetimepicker table tr td span.old {
color: #999999;
}
.datetimepicker th.switch {
width: 145px;
}
.datetimepicker th span.glyphicon {
pointer-events: none;
}
.datetimepicker thead tr:first-child th,
.datetimepicker tfoot tr:first-child th {
cursor: pointer;
}
.datetimepicker thead tr:first-child th:hover,
.datetimepicker tfoot tr:first-child th:hover {
background: #eeeeee;
}
.input-append.date .add-on i,
.input-prepend.date .add-on i,
.input-group.date .input-group-addon span {
cursor: pointer;
width: 14px;
height: 14px;
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,16 +1,17 @@
/** /**
* Simplified Chinese translation for bootstrap-datetimepicker * Simplified Chinese translation for bootstrap-datetimepicker
* Yuan Cheung <advanimal@gmail.com> * Yuan Cheung <advanimal@gmail.com>
*/ */
(function($){ ;
$.fn.datetimepicker.dates['zh-CN'] = { (function($) {
days: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"], $.fn.datetimepicker.dates['zh-CN'] = {
daysShort: ["周日", "周一", "周二", "周三", "周四", "周五", "周六", "周日"], days: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"],
daysMin: ["日", "一", "二", "三", "四", "五", "六", "日"], daysShort: ["周日", "周一", "周二", "周三", "周四", "周五", "周六", "周日"],
months: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"], daysMin: ["日", "一", "二", "三", "四", "五", "六", "日"],
monthsShort: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"], months: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
today: "现在", monthsShort: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
suffix: [], today: "现在",
meridiem: ["上午", "下午"] suffix: [],
}; meridiem: ["上午", "下午"]
}(jQuery)); };
}(jQuery));

View File

@ -5,10 +5,15 @@
%> %>
<%inherit file="../page_base.mako"/> <%inherit file="../page_base.mako"/>
<%block name="extend_css_file">
<link href="${ static_url('plugins/datetimepicker/css/bootstrap-datetimepicker.min.css') }" rel="stylesheet">
</%block>
<%block name="extend_js_file"> <%block name="extend_js_file">
<script type="text/javascript" src="${ static_url('js/user/user-list.js') }"></script> <script type="text/javascript" src="${ static_url('js/user/user-list.js') }"></script>
<script type="text/javascript" src="${ static_url('plugins/jquery/ajaxfileupload.js') }"></script> <script type="text/javascript" src="${ static_url('plugins/jquery/ajaxfileupload.js') }"></script>
<script type="text/javascript" src="${ static_url('plugins/datetimepicker/js/bootstrap-datetimepicker.js') }"></script> <script type="text/javascript" src="${ static_url('plugins/datetimepicker/js/bootstrap-datetimepicker.min.js') }"></script>
<script type="text/javascript" src="${ static_url('plugins/datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js') }"></script>
</%block> </%block>
<%block name="embed_js"> <%block name="embed_js">
@ -233,21 +238,30 @@
</div> </div>
<div class="form-group form-group-sm"> <div class="form-group form-group-sm">
<label for="edit-user-valid-date" class="col-sm-2 control-label">生效时间:</label> <label class="col-sm-2 control-label">生效时间:</label>
<div class="col-sm-5"> <div class="col-sm-5">
<div class='input-group date' id='edit-user-valid-from'> <div class="input-group date" id="edit-user-valid-from">
<input type='text' class="form-control" /> <input type='text' class="form-control" readonly />
<span class="input-group-addon"> <span class="input-group-addon"><span class="glyphicon glyphicon-remove"></span></span>
<span class="glyphicon glyphicon-calendar"></span> <span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span></span>
</span>
</div> </div>
</div>
<div class="col-sm-5">
<div class="control-desc">开始</div>
</div>
</div>
<div class="form-group form-group-sm">
<label class="col-sm-2"></label>
<div class="col-sm-5">
<div class='input-group date' id='edit-user-valid-to'> <div class='input-group date' id='edit-user-valid-to'>
<input type='text' class="form-control" /> <input type='text' class="form-control" readonly />
<span class="input-group-addon"> <span class="input-group-addon"><span class="glyphicon glyphicon-remove"></span></span>
<span class="glyphicon glyphicon-calendar"></span> <span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span></span>
</span>
</div> </div>
</div> </div>
<div class="col-sm-5">
<div class="control-desc">结束</div>
</div>
</div> </div>
@ -270,20 +284,10 @@
<li> <li>
<hr class="hr-sm"/> <hr class="hr-sm"/>
</li> </li>
## <li><div id="sec-auth-username-password" class="tp-checkbox">用户名 + 密码</div></li> ## <li><div id="sec-auth-username-password" class="tp-checkbox">用户名 + 密码</div></li>
<li><div id="sec-auth-username-password-captcha" class="tp-checkbox">用户名 + 密码 + 验证码</div></li>
<li> ## <li><div id="sec-auth-username-oath" class="tp-checkbox">用户名 + 身份认证器动态密码</div></li>
<div id="sec-auth-username-password-captcha" class="tp-checkbox">用户名 + 密码 + <li><div id="sec-auth-username-password-oath" class="tp-checkbox">用户名 + 密码 + 身份认证器动态密码</div></li>
验证码
</div>
</li>
## <li><div id="sec-auth-username-oath" class="tp-checkbox">用户名 + 身份认证器动态密码</div></li>
<li>
<div id="sec-auth-username-password-oath" class="tp-checkbox">用户名 + 密码 +
身份认证器动态密码
</div>
</li>
</ul> </ul>
</div> </div>
</div> </div>