MUI 官网:MUI - DCloud
MUI 文档:UI组件 · MUI
演示地址:https://dcloud.io/hellomui/ (支持手机和电脑浏览器)
开发工具:https://www.dcloud.io/hbuilderx.html (Hbuilder X)
scroll (区域滚动)
在App开发中,div区域滚动的需求是普遍存在的,但系统默认实现又有如下问题:
- Android平台4.0以下不支持div滚动
- Android平台4.0以上支持div滚动,但不显示滚动条
- 弹出层的div滚动在iOS平台存在事件透传的问题
因此,mui额外提供了区域滚动组件,使用时需要遵循如下DOM结构:
<div class="mui-scroll-wrapper">
<div class="mui-scroll">
<!--这里放置真实显示的DOM内容-->
</div>
</div>
区域滚动组件默认为absolute定位,全屏显示;在实际使用过程中,需要手动设置滚动区域的位置(top和height)
若使用区域滚动组件,需手动初始化scroll控件
*常用配置项:
scroll.options
options = {
scrollY: true, //是否竖向滚动
scrollX: false, //是否横向滚动
startX: 0, //初始化时滚动至x
startY: 0, //初始化时滚动至y
indicators: true, //是否显示滚动条
deceleration:0.0006, //阻尼系数,系数越小滑动越灵敏
bounce: true //是否启用回弹
}
示例:初始化scroll控件:
mui('.mui-scroll-wrapper').scroll({
deceleration: 0.0005 //flick 减速系数,系数越大,滚动速度越慢,滚动距离越小,默认值0.0006
});
mui中iOS平台的下拉刷新(Android平台的下拉刷新使用的是双webview+原生滚动方案)、popover、可拖动式选项卡均使用了scroll组件。 为方便大家使用,mui还额外为scroll插件封装了部分方法。
滚动到特定位置
滚动到底部位置
滚动到顶部的代码比较容易实现,坐标值设为0、0即可;但滚动到底部,需要计算该区域的实际高度,因此mui封装了scrollToBottom方法。
横向滚动
横向滚动只需在 scroll 组件基础上添加 mui-slider-indicatorcode
mui-segmented-control
mui-segmented-control-inverted
这三个class即可.(给子元素添加 mui-control-item
可加大文字间距增强体验
如:)
<div class="mui-scroll-wrapper mui-slider-indicator mui-segmented-control mui-segmented-control-inverted">
<div class="mui-scroll">
<a class="mui-control-item mui-active">
推荐
</a>
<a class="mui-control-item">
热点
</a>
<a class="mui-control-item">
北京
</a>
<a class="mui-control-item">
社会
</a>
<a class="mui-control-item">
娱乐
</a>
<a class="mui-control-item">
科技
</a>
</div>
</div>
原文链接:
动态获取数据无法滚动问题
2024-09-02 更新
提示:动态获取数据后,需要调用控件重新执行 mui('.mui-scroll').scroll() 方法
需求:页面打开弹出菜单,不全屏显示及部分元素在滚动区域滚动
官方demo地址:Hello MUI
演示截图:
上代码:基于弹出菜单非全屏显示及滚动操作,所以需要修改css 及 js 文件。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<title>主页管理</title>
<link href="../css/mui.min.css" rel="stylesheet" />
<link href="../css/mui.picker.min.css" rel="stylesheet" />
<link href="../css/mui.poppicker.css" />
<link href="../css/icons-extra.css" rel="stylesheet" />
<style>
html,
body {
background-color: #efeff4;
}
.mui-bar~.mui-content .mui-fullscreen {
top: 44px;
height: auto;
}
.mui-pull-top-tips {
position: absolute;
top: -20px;
left: 50%;
margin-left: -25px;
width: 40px;
height: 40px;
border-radius: 100%;
z-index: 1000;
}
.mui-bar~.mui-pull-top-tips {
top: 24px;
}
.mui-pull-top-wrapper {
width: 42px;
height: 42px;
display: block;
text-align: center;
background-color: #efeff4;
border: 1px solid #ddd;
border-radius: 25px;
background-clip: padding-box;
box-shadow: 0 4px 10px #bbb;
overflow: hidden;
}
.mui-pull-top-tips.mui-transitioning {
-webkit-transition-duration: 200ms;
transition-duration: 200ms;
}
.mui-pull-top-tips .mui-pull-loading {
/*-webkit-backface-visibility: hidden;
-webkit-transition-duration: 400ms;
transition-duration: 400ms;*/
margin: 0;
}
.mui-pull-top-wrapper .mui-icon,
.mui-pull-top-wrapper .mui-spinner {
margin-top: 7px;
}
.mui-pull-top-wrapper .mui-icon.mui-reverse {
/*-webkit-transform: rotate(180deg) translateZ(0);*/
}
.mui-pull-bottom-tips {
text-align: center;
background-color: #efeff4;
font-size: 15px;
line-height: 40px;
color: #777;
margin-bottom: 100px;/** 显示加载提示信息: 没有更多数据了等等。 */
}
.mui-pull-top-canvas {
overflow: hidden;
background-color: #fafafa;
border-radius: 40px;
box-shadow: 0 4px 10px #bbb;
width: 40px;
height: 40px;
margin: 0 auto;
}
.mui-pull-top-canvas canvas {
width: 40px;
}
.mui-slider-indicator.mui-segmented-control {
background-color: #efeff4;
}
/**
* 设置在线状态: 自定义文字
*/
.mui-switch:before {
content: '离线';
color: #999;
}
.mui-switch.mui-active:before {
content: '在线';
color: #fff;
}
#topPopover {
position: fixed;
top: 16px;
right: 6px;
height: 430px;
}
/* #mui-popover-menu {
} */
.mui-preview-image.mui-fullscreen {
position: fixed;
z-index: 20;
background-color: #000;
}
.mui-preview-header,
.mui-preview-footer {
position: absolute;
width: 100%;
left: 0;
z-index: 10;
}
.mui-preview-header {
height: 44px;
top: 0;
}
.mui-preview-footer {
height: 50px;
bottom: 0px;
}
.mui-preview-header .mui-preview-indicator {
display: block;
line-height: 25px;
color: #fff;
text-align: center;
margin: 15px auto 4;
width: 70px;
background-color: rgba(0, 0, 0, 0.4);
border-radius: 12px;
font-size: 16px;
}
.mui-preview-image {
display: none;
-webkit-animation-duration: 0.5s;
animation-duration: 0.5s;
-webkit-animation-fill-mode: both;
animation-fill-mode: both;
}
.mui-preview-image.mui-preview-in {
-webkit-animation-name: fadeIn;
animation-name: fadeIn;
}
.mui-preview-image.mui-preview-out {
background: none;
-webkit-animation-name: fadeOut;
animation-name: fadeOut;
}
.mui-preview-image.mui-preview-out .mui-preview-header,
.mui-preview-image.mui-preview-out .mui-preview-footer {
display: none;
}
.mui-zoom-scroller {
position: absolute;
display: -webkit-box;
display: -webkit-flex;
display: flex;
-webkit-box-align: center;
-webkit-align-items: center;
align-items: center;
-webkit-box-pack: center;
-webkit-justify-content: center;
justify-content: center;
left: 0;
right: 0;
bottom: 0;
top: 0;
width: 100%;
height: 100%;
margin: 0;
-webkit-backface-visibility: hidden;
}
.mui-zoom {
-webkit-transform-style: preserve-3d;
transform-style: preserve-3d;
}
.mui-slider .mui-slider-group .mui-slider-item img {
width: auto;
height: auto;
max-width: 100%;
max-height: 100%;
}
.mui-android-4-1 .mui-slider .mui-slider-group .mui-slider-item img {
width: 100%;
}
.mui-android-4-1 .mui-slider.mui-preview-image .mui-slider-group .mui-slider-item {
display: inline-table;
}
.mui-android-4-1 .mui-slider.mui-preview-image .mui-zoom-scroller img {
display: table-cell;
vertical-align: middle;
}
.mui-preview-loading {
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
display: none;
}
.mui-preview-loading.mui-active {
display: block;
}
.mui-preview-loading .mui-spinner-white {
position: absolute;
top: 50%;
left: 50%;
margin-left: -25px;
margin-top: -25px;
height: 50px;
width: 50px;
}
.mui-preview-image img.mui-transitioning {
-webkit-transition: -webkit-transform 0.5s ease, opacity 0.5s ease;
transition: transform 0.5s ease, opacity 0.5s ease;
}
@-webkit-keyframes fadeIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
@keyframes fadeIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
@-webkit-keyframes fadeOut {
0% {
opacity: 1;
}
100% {
opacity: 0;
}
}
@keyframes fadeOut {
0% {
opacity: 1;
}
100% {
opacity: 0;
}
}
p img {
max-width: 100%;
height: auto;
}
/**
* 弹出层样式
*/
.mui-popover{
height: 100%;
}
/**
* 上传文件样式
*/
.mui-popover .image-list {
width: 100%;
height: 85px;
background-size: cover;
padding: 10px 10px;
overflow: hidden;
}
.mui-popover .image-item.space {
border: none;
}
.mui-popover .image-item {
width: 65px;
height: 65px;
background-image: url(../img/iconfont-tianjia.png);
background-size: 100% 100%;
display: inline-block;
position: relative;
border-radius: 5px;
margin-right: 10px;
margin-bottom: 10px;
border: solid 1px #e8e8e8;
}
.mui-popover .image-item input[type="file"] {
position: absolute;
left: 0px;
top: 0px;
width: 100%;
height: 100%;
opacity: 0;
cursor: pointer;
/* z-index: 0; */
}
.mui-popover .image-item.space .image-close {
display: none;
}
.mui-popover .image-item .image-close {
position: absolute;
display: inline-block;
right: -6px;
top: -6px;
width: 20px;
height: 20px;
text-align: center;
line-height: 20px;
border-radius: 12px;
background-color: #FF5053;
color: #f3f3f3;
border: solid 1px #FF5053;
font-size: 9px;
font-weight: 200;
/* z-index: 1; */
}
#top2Popover {
position: absolute;
/* height: 100%; */
/* position: fixed; */
z-index: 100000000;
top: 16px;
right: 6px;
}
#top2Popover .mui-popover-arrow {
left: auto;
right: 6px;
}
#top2Popover .mui-popover-arrow p {
text-indent: 22px;
}
#top2Popover.mui-popover {
/* min-height: 50px; */
/* height: 450px; */
height: 450px;
/* overflow: scroll; */
/* height: auto; */
}
#top2Popover.mui-popover .mui-scroll-wrapper {
/* min-height: 50px; */
/* height: 450px; */
/* height: 450px; */
height: 100%;
/* padding-bottom: 50px; */
/* overflow: scroll; */
/* height: auto; */
}
#top2Popover.mui-popover .mui-scroll {
height: 100%;
overflow: scroll;
}
#top2Popover.mui-popover .mui-table-view{
padding-top: 50px;
padding-bottom: 100px;
/* overflow: scroll; */
}
/*
.view-content-page {
} */
.view-content-page {
height: auto;
}
/* .view-content {
} */
.view-content {
display: block;
position: relative;
/* left: 0; */
/* right: 0; */
/* top: 0; */
/* bottom: 0; */
width: 100%;
height: 100%;;
/* background-color: #efeff4; */
}
.view-content textarea {
border: none !important;
}
.view-content textarea {
/* height: 100px; */
margin-bottom: 0 !important;
padding-bottom: 0 !important;
}
.view-content .row {
width: 100%;
/* background-color: #fff; */
}
.view-content p {
padding: 5px 22px;
color: #000;
}
</style>
</head>
<body style="background-color: #FFFFFF;">
<!-- 主页面容器 start-->
<div class="mui-inner-wrap" id="uploadMainPageSide">
<header class="mui-bar mui-bar-nav" style="background-color: #007aff;">
<div style="height: 44px;right: 40px;left: 40px;color: #FFFFFF;position: absolute;top: 0px;">
<div style="width: 100%;height: 44px;line-height: 44px;text-align: center;font-size: 20px;">运维系统</div>
</div>
<a class="mui-action-menu mui-icon mui-icon-bars mui-pull-left" href="#topPopover" style="color: #FFFFFF;"></a>
<!-- <a class="mui-icon mui-icon-person-filled mui-pull-left" style="color: #FFFFFF;" id="userInfoBtn"></a> -->
<!-- <a class="mui-icon mui-icon-extra mui-icon-extra-trend mui-pull-right" style="color: #FFFFFF;" id="faultInfoCountBtn"></a> -->
<a class="mui-icon mui-icon-extra mui-icon-extra-notice mui-pull-right" style="color: #FFFFFF;margin-right: 0px;" id="sysMessageBtn">
<span class="mui-badge mui-badge-danger" style="margin-top: 7px;margin-left: -22px;" >0</span>
</a>
<!-- <a class="mui-action-menu mui-icon mui-icon-bars mui-pull-right" href="#top2Popover" style="color: #FFFFFF;"></a> -->
<!-- <a class="mui-icon mui-icon mui-icon-search mui-pull-right" style="color: #FFFFFF;margin-right: 0px;display: none;" id="gotoDeviceSearchBtn">
</a> -->
<a class="mui-action-menu mui-icon mui-icon-search mui-pull-right" style="color: #FFFFFF;margin-right: 0px;" href="#top2Popover" id="gotoFaultInfoSearchBtn">
</a>
</header>
<div class="mui-content" style="background-color:#fff" >
<div id="slider" class="mui-slider mui-fullscreen" >
<div style="padding: 10px 10px;z-index: 1000;">
<div id="segmentedControl" class="mui-segmented-control">
<a class="mui-control-item mui-active" id="mui-control-item0" data-index="0" href="#item0">新任务<span class="mui-icon-extra mui-icon-extra-filter" style="font-size: 16px;"></span></a>
<a class="mui-control-item" id="mui-control-item1" data-index="1" href="#item1" >待处理</a>
<a class="mui-control-item" id="mui-control-item2" data-index="2" href="#item2" >处理中</a>
<a class="mui-control-item" id="mui-control-item3" data-index="3" href="#item3" >已完成</a>
</div>
</div>
<div class="mui-slider-group">
<div id="item0" class="mui-slider-item mui-control-content mui-active">
<div class="mui-scroll-wrapper item0">
<div class="mui-scroll mui-scroll-list" style="padding-bottom: 160px;">
<form class="mui-input-group itemList0" id="itemList0">
</form>
<div id="tab-empty0" class="" wdith="100%" style="text-align: center;"><img src="../img/icon_empty.png" style="width: 200px;height: 200px;"></div>
</div>
</div>
</div>
<div id="item1" class="mui-slider-item mui-control-content">
<div class="mui-scroll-wrapper item1">
<div class="mui-scroll mui-scroll-list" style="padding-bottom: 160px;">
<form class="mui-input-group itemList1" id="itemList1">
</form>
<div id="tab-empty1" wdith="100%" style="text-align: center;"><img src="../img/icon_empty.png" style="width: 200px;height: 200px;"></div>
</div>
</div>
</div>
<div id="item2" class="mui-slider-item mui-control-content">
<div class="mui-scroll-wrapper item2">
<div class="mui-scroll mui-scroll-list" style="padding-bottom: 160px;">
<form class="mui-input-group itemList2" id="itemList2">
</form>
<div id="tab-empty2" wdith="100%" style="text-align: center;"><img src="../img/icon_empty.png" style="width: 200px;height: 200px;"></div>
</div>
</div>
</div>
<div id="item3" class="mui-slider-item mui-control-content">
<div class="mui-scroll-wrapper item3">
<div class="mui-scroll mui-scroll-list" style="padding-bottom: 160px;">
<form class="mui-input-group itemList3" id="itemList3">
</form>
<div id="tab-empty3" wdith="100%" style="text-align: center;"><img src="../img/icon_empty.png" style="width: 200px;height: 200px;"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- 主页面容器 end-->
<!-- 操作菜单 -->
<div id="topPopover" class="mui-popover" style="display: none;">
<div class="mui-popover-arrow" style="left:248px"></div>
<div class="mui-scroll-wrapper" data-scroll="1">
<div class="mui-scroll" style="transform: translate3d(0px, 0px, 0px) translateZ(0px); transition-duration: 0ms; transition-timing-function: cubic-bezier(0.165, 0.84, 0.44, 1);">
<ul class="mui-table-view">
<li class="mui-table-view-cell" id="userInfoBtn"><a href="javascript:;" class=""><span class="mui-icon mui-icon-person-filled"> 个人信息</span></a>
</li>
<li class="mui-table-view-cell" id="attendanceBtn"><a href="javascript:;" class=""><span class="mui-icon-extra mui-icon-extra-peoples"> 考勤管理</span></a>
</li>
</ul>
</div>
</div>
</div>
<!--右上角弹出菜单-->
<div id="top2Popover" class="mui-popover" style="display: none; top: 50px; ">
<div class="mui-popover-arrow"></div>
<div class="mui-scroll-wrapper " data-scroll="1">
<button type="button" class="mui-btn mui-btn-primary" id="selectProjectOkBtn" > 确定 </button>
<button type="button" class="mui-btn mui-btn-info" id="selectProjectResetBtn" > 重置 </button>
<div class="mui-scroll-wrapper-project mui-scroll " style="transform: translate3d(0px, 0px, 0px) translateZ(0px);">
<!-- -->
<div class="mui-table-view" id="selectProjectList">
<!-- <br>
<br> -->
<!-- <form class="mui-input-group" id="selectProjectList"> -->
<!-- <div class="mui-input-row mui-checkbox mui-left">
<label>checked:false</label>
<input name="checkbox" value="Item 1" type="checkbox" >
</div>
<div class="mui-input-row mui-checkbox mui-left">
<label>checked:true</label>
<input name="checkbox" value="Item 2" type="checkbox" checked>
</div>
<div class="mui-input-row mui-checkbox mui-left">
<label>checked:true</label>
<input name="checkbox" value="Item 2" type="checkbox" checked>
</div>
<div class="mui-input-row mui-checkbox mui-left">
<label>checked:true</label>
<input name="checkbox" value="Item 2" type="checkbox" checked>
</div>
<div class="mui-input-row mui-checkbox mui-left">
<label>checked:true</label>
<input name="checkbox" value="Item 2" type="checkbox" checked>
</div>
<div class="mui-input-row mui-checkbox mui-left">
<label>checked:true</label>
<input name="checkbox" value="Item 2" type="checkbox" checked>
</div>
<div class="mui-input-row mui-checkbox mui-left">
<label>checked:true</label>
<input name="checkbox" value="Item 2" type="checkbox" checked>
</div>
<div class="mui-input-row mui-checkbox mui-left">
<label>checked:true</label>
<input name="checkbox" value="Item 2" type="checkbox" checked>
</div>
<div class="mui-input-row mui-checkbox mui-left">
<label>checked:true</label>
<input name="checkbox" value="Item 2" type="checkbox" checked>
</div>
<div class="mui-input-row mui-checkbox mui-left">
<label>checked:true</label>
<input name="checkbox" value="Item 2" type="checkbox" checked>
</div>
<div class="mui-input-row mui-checkbox mui-left mui-disabled">
<label>disabled checkbox</label>
<input name="checkbox" type="checkbox" disabled="disabled">
</div> -->
<!-- </form> -->
</div>
</div>
<!-- <div class="mui-scrollbar mui-scrollbar-vertical">
<div class="mui-scrollbar-indicator" style="transition-duration: 0ms; display: none; height: 8px; transform: translate3d(0px, -8px, 0px) translateZ(0px);"></div>
</div> -->
</div>
</div>
<script src="../js/CryptoJS/aes.js"></script>
<script src="../js/CryptoJS/md5.js"></script>
<script src="../js/mui.min.js"></script>
<script src="../js/mui.pullToRefresh.js"></script>
<script src="../js/mui.pullToRefresh.material.js"></script>
<script src="../js/mui.picker.min.js"></script>
<script src="../js/mui.poppicker.js"></script>
<script src="../js/app.js"></script>
<script src="../js/mui.zoom.js"></script>
<script src="../js/mui.previewimage.js"></script>
<script>
(function($, doc) {
$.init({
statusBarBackground: '#f7f7f7',
swipeBack:false, //启用右滑关闭功能
//该属性禁用了当前页面的返回功能,但是还是有双击退出app的功能
keyEventBind: {
backbutton: false //关闭back按键监听
}
});
//阻尼系数
var deceleration = mui.os.ios?0.003:0.0009;
$('.mui-scroll-wrapper').scroll({
scrollX: false,
scrollY: true, //是否竖向滚动
bounce: true,
startX: 0,
startY: 0,
indicators: true, //是否显示滚动条
deceleration: 0.0005 //flick 减速系数,系数越大,滚动速度越慢,滚动距离越小,默认值0.0006
});
var h =document.documentElement.clientHeight;//网页可见区域高
var w = document.documentElement.clientWidth;//网页可见区域宽
var t =(h-mui('.mui-popover')[0].offsetHeight)/2;
var l =(w-280)/2;//它的默认宽280
$('.mui-popover')[0].style.top= '0px';
$('.mui-popover')[0].style.left = '0px';
$('.mui-popover')[0].style.width= w + 'px';
//var t =(h-mui('.mui-popover')[1].offsetHeight)/2;
//var l =(w-280)/2;//它的默认宽280
$('.mui-popover')[1].style.top= '0px';
$('.mui-popover')[1].style.left = '0px';
$('.mui-popover')[1].style.width= w + 'px';
//系统消息
var settings = {};
var loginInfo = {};
var searchProjectIds = '';//选择项目查找任务
$.plusReady(function() {
//下拉选择项目列表
var showProjectNamePicker = new mui.PopPicker();
var showProjectNamePickerButton = document.getElementById('showProjectNamePicker');
settings = app.getSettings();
if (settings && settings.loginInfo){
// loginInfo = JSON.parse(settings.loginInfo);
loginInfo = settings.loginInfo;
loadParams.loginToken = loginInfo.loginToken;
//任务上报权限、设备维护权限
//获取所属项目列表
getMeetingDeviceProjectList();
}
var webviewPage = plus.webview.currentWebview();
var bodyHeight = plus.display.resolutionHeight;
//plus.nativeUI.alert("页面高度: " + bodyHeight, function(){}, "系统提示: 结果", "确定");
document.getElementById("item0").style.height = bodyHeight + "px";
document.getElementById("item1").style.height = bodyHeight + "px";
document.getElementById("item2").style.height = bodyHeight + "px";
document.getElementById("item3").style.height = bodyHeight + "px";
//选择项目查找任务 var searchProjectIds = null;
var selectProjectOkBtn = document.getElementById("selectProjectOkBtn");
var selectProjectResetBtn = document.getElementById("selectProjectResetBtn");
selectProjectOkBtn.addEventListener('tap', function(event) {
var projectCheckboxObject = document.getElementsByName("checkbox-project");
var checkedValue = '';
var checkedIndex = 0;
if (projectCheckboxObject && projectCheckboxObject.length > 0){
for(var i = 0; i < projectCheckboxObject.length; i++){
var currentCheckboxObject = projectCheckboxObject[i];
if (currentCheckboxObject.checked === true){
if (checkedIndex > 0){
checkedValue += ',' + currentCheckboxObject.value;
}else{
checkedValue += currentCheckboxObject.value;
}
checkedIndex++;
}
};
searchProjectIds = checkedValue;
}
mui('#top2Popover').popover('hide');
}, false);
selectProjectResetBtn.addEventListener('tap', function(event) {
var projectCheckboxObject = document.getElementsByName("checkbox-project");
var projectCheckboxObject = document.getElementsByName("checkbox-project");
var checkedValue = null;
var checkedIndex = 0;
if (projectCheckboxObject && projectCheckboxObject.length > 0){
for(var i = 0; i < projectCheckboxObject.length; i++){
var currentCheckboxObject = projectCheckboxObject[i];
if (currentCheckboxObject.checked === true){
currentCheckboxObject.checked = false;
}
};
searchProjectIds = '';
}
mui('#top2Popover').popover('hide');
}, false);
//下拉选择项目列表
showProjectNamePickerButton.addEventListener('tap', function(event) {
showProjectNamePicker.show(function(items) {
var selectItem = items[0];
showProjectNamePickerButton.innerHTML = selectItem.text;
document.getElementById('addProjectName').value = selectItem.text;
});
}, false);
//获取所属项目列表
function getMeetingDeviceProjectList(){
var tokenData = localToken;
var encryptedLoginId = app.GetEncryptData(loginInfo.loginId + "", tokenData, tokenData);
var dataUrl = "loginToken" + encryptedLoginId + "csrftoken" + tokenData;
var signData = app.GetSignData(dataUrl);
var postData = {
loginToken: encryptedLoginId,
sign: signData
}
app.ajaxJson(
'/faultInfo/projectList',
postData,
function(resultObject){
//请求成功处理
if (resultObject.code == 1000){
var dataList = resultObject.data;
// console.log("获取运维人员列表, dataList: " + JSON.stringify(dataList));
var selectProjectList = document.getElementById("selectProjectList");
if (dataList && dataList.length > 0){
var projectNamePickerData = new Array();
var selectProjectListData = "";
for (var i = 0 ; i < dataList.length ; i++){
var projectId = dataList[i].value;
var projectName = dataList[i].label;
projectNamePickerData.push({
value: projectId,
text: projectName
});
selectProjectListData += '<div class="mui-input-row mui-checkbox mui-left">';
selectProjectListData += '<label>'+ projectName +'</label>';
selectProjectListData += '<input name="checkbox-project" value="' + projectId + '" type="checkbox" >';
selectProjectListData += '</div>';
}
showProjectNamePicker.setData(projectNamePickerData);
selectProjectList.innerHTML = selectProjectListData;
mui(".mui-scroll-wrapper-project.mui-scroll").scroll();
setTimeout(function(){
// mui('.mui-scroll-wrapper-project').scroll().reLayout();
// mui('.mui-scroll-wrapper-project').scroll().scrollTo(0,0,100);
// mui('.mui-scroll-wrapper-project').scroll().scrollToBottom(100);
//滚动到顶端
// mui('#top2Popover').scroll().scrollTo(0,1000,10);
},300)
}else{
showProjectNamePicker.setData([]);
}
}else if(resultObject.code == 1003){
//登录超时,跳转到登录页面
plus.nativeUI.alert(resultObject.msg, function(){
app.clearAllCache();
setTimeout(function(){
app.restartApp();
},1000);
}, "系统提示", "确定");
}
else{
plus.nativeUI.alert(resultObject.msg, function(){}, "系统提示", "确定");
return;
}
},
function(errorMsg){
//请求失败处理
plus.nativeUI.alert(errorMsg, function(){}, "系统提示", "确定");
},
""
);
}
});
//登录过期,跳转到登录页面
//跳转登录页面
var toLogin = function() {
$.openWindow({
id: 'login',
url: '../login.html?v='+ new Date().getMilliseconds(),
createNew: false,
show: {
aniShow: 'pop-in'
},
styles: {
popGesture: 'hide'
},
waiting: {
autoShow: true
}
});
};
//登录过期,跳转到登录页面
//跳转登录页面
var toLogin = function() {
$.openWindow({
id: 'login',
url: '../login.html?v='+ new Date().getMilliseconds(),
createNew: false,
show: {
aniShow: 'pop-in'
},
styles: {
popGesture: 'hide'
},
waiting: {
autoShow: true
}
});
};
mui.previewImage();
}(mui, document));
</script>
</body>
</html>
关键性的代码:
html部分:
<a class="mui-action-menu mui-icon mui-icon-search mui-pull-right" style="color: #FFFFFF;margin-right: 0px;" href="#top2Popover" id="gotoFaultInfoSearchBtn">
</a>
<div id="top2Popover" class="mui-popover" style="display: none; top: 50px; ">相关内容
css部分:#top2Popover相关样式
js部分://获取所属项目列表 getMeetingDeviceProjectList(); 滚动代码:mui(".mui-scroll-wrapper-project.mui-scroll").scroll();
最终效果图(顶部查询按钮触发弹出层、按钮固定、列表滚动【列表右下角出现滚动条】):