瀏覽代碼

初始化羊场湾代码

jifuning 4 年之前
父節點
當前提交
5da0903f8e
共有 100 個文件被更改,包括 38650 次插入0 次删除
  1. 1698 0
      widget/css/QRcode.css
  2. 315 0
      widget/css/addRecode.css
  3. 3625 0
      widget/css/animate.css
  4. 82 0
      widget/css/api.css
  5. 159 0
      widget/css/apiToast.css
  6. 二進制
      widget/css/aui-iconfont.ttf
  7. 2718 0
      widget/css/aui.css
  8. 411 0
      widget/css/popoPicker.css
  9. 881 0
      widget/css/projeck.css
  10. 916 0
      widget/css/projeck.less
  11. 1030 0
      widget/css/select.css
  12. 537 0
      widget/css/style.css
  13. 15 0
      widget/css/swiper.css
  14. 167 0
      widget/css/toast.css
  15. 824 0
      widget/html/704/704.html
  16. 98 0
      widget/html/704/securtyFrm.html
  17. 92 0
      widget/html/704/securtyWin.html
  18. 1007 0
      widget/html/704Jinfeng/704.html
  19. 108 0
      widget/html/704Jinfeng/securtyFrm.html
  20. 92 0
      widget/html/704Jinfeng/securtyWin.html
  21. 824 0
      widget/html/704Zaoquan/704.html
  22. 108 0
      widget/html/704Zaoquan/securtyFrm.html
  23. 92 0
      widget/html/704Zaoquan/securtyWin.html
  24. 225 0
      widget/html/Qrcode/11.html
  25. 599 0
      widget/html/Qrcode/QRcode0.html
  26. 574 0
      widget/html/Qrcode/QRcode1.html
  27. 180 0
      widget/html/Qrcode/QRcodeList.html
  28. 110 0
      widget/html/Qrcode/QrcodeDetaile.html
  29. 76 0
      widget/html/Qrcode/QrcodeRecodeList.html
  30. 119 0
      widget/html/Qrcode/Sweepcode.html
  31. 110 0
      widget/html/Qrcode/recordDetaile.html
  32. 1243 0
      widget/html/browseQrcode/addRecode.html
  33. 3198 0
      widget/html/browseQrcode/browseQrcodeDe.html
  34. 246 0
      widget/html/browseQrcode/browseQrcode_win.html
  35. 94 0
      widget/html/browseQrcode/browseRecodeDe.html
  36. 94 0
      widget/html/browseQrcode/browseRecodeItem.html
  37. 94 0
      widget/html/browseQrcode/browseUrl.html
  38. 396 0
      widget/html/browseQrcode/echartLevel.html
  39. 69 0
      widget/html/browseQrcode/map.html
  40. 241 0
      widget/html/browseQrcode/moreBrowse.html
  41. 150 0
      widget/html/browseQrcode/qrcodeShare.html
  42. 677 0
      widget/html/browseQrcode/recodeDetails.html
  43. 496 0
      widget/html/browseQrcode/recodeItem.html
  44. 616 0
      widget/html/cloudDisk/cloudDiskDe.html
  45. 631 0
      widget/html/cloudDisk/cloudDiskList.html
  46. 305 0
      widget/html/cloudDisk/searchFile_frm.html
  47. 169 0
      widget/html/cloudDisk/searchFile_win.html
  48. 194 0
      widget/html/forgetBind/bindPhone.html
  49. 196 0
      widget/html/forgetBind/forgetPass.html
  50. 43 0
      widget/html/mail/mailList.html
  51. 156 0
      widget/html/mail/mailList_frm.html
  52. 117 0
      widget/html/mail/modul.html
  53. 203 0
      widget/html/mail/organization.html
  54. 195 0
      widget/html/mail/organization_frame.html
  55. 319 0
      widget/html/mail/personalInfo.html
  56. 71 0
      widget/html/main.html
  57. 219 0
      widget/html/material/diffSearchType.html
  58. 187 0
      widget/html/material/materialsClassifyChild.html
  59. 185 0
      widget/html/material/materialsClassify_win.html
  60. 217 0
      widget/html/material/materialsList.html
  61. 181 0
      widget/html/material/materialsStorage.html
  62. 292 0
      widget/html/material/searchMaterialsStorage.html
  63. 100 0
      widget/html/news/getNewsDetaile.html
  64. 389 0
      widget/html/news/news_frm.html
  65. 301 0
      widget/html/news/news_win.html
  66. 155 0
      widget/html/page/addPosonal.html
  67. 101 0
      widget/html/page/ceshi001.html
  68. 47 0
      widget/html/page/clearCache.html
  69. 528 0
      widget/html/page/frame0.html
  70. 603 0
      widget/html/page/frame1.html
  71. 430 0
      widget/html/page/frame2.html
  72. 293 0
      widget/html/page/frame22.html
  73. 1045 0
      widget/html/page/frame3.html
  74. 55 0
      widget/html/page/frame3_1.html
  75. 1011 0
      widget/html/page/frame3_2.html
  76. 711 0
      widget/html/page/frame4.html
  77. 94 0
      widget/html/page/openNews.html
  78. 94 0
      widget/html/page/openUrl.html
  79. 114 0
      widget/html/page/openUrlBanner.html
  80. 197 0
      widget/html/page/search2_frameDetails1.html
  81. 199 0
      widget/html/page/search2_frameDetails2.html
  82. 200 0
      widget/html/page/search2_frameDetails3.html
  83. 200 0
      widget/html/page/search2_frameDetails4.html
  84. 125 0
      widget/html/page/search_frame0.html
  85. 116 0
      widget/html/page/search_frame1.html
  86. 113 0
      widget/html/page/search_frame2.html
  87. 202 0
      widget/html/page/search_frameDetails1.html
  88. 200 0
      widget/html/page/search_frameDetails2.html
  89. 204 0
      widget/html/page/search_frameDetails3.html
  90. 59 0
      widget/html/page/search_frameDetails4.html
  91. 278 0
      widget/html/page/search_win.html
  92. 114 0
      widget/html/page/tailoring.html
  93. 115 0
      widget/html/personalData/collectionList.html
  94. 164 0
      widget/html/personalData/handwrittenSignature.html
  95. 127 0
      widget/html/personalData/personal.html
  96. 395 0
      widget/html/personalData/personal_frame0.html
  97. 86 0
      widget/html/personalData/personal_frame1.html
  98. 86 0
      widget/html/personalData/personal_frame2.html
  99. 113 0
      widget/html/personalData/tailoring01.html
  100. 0 0
      widget/html/producationDataItem/informationCenter.html

File diff suppressed because it is too large
+ 1698 - 0
widget/css/QRcode.css


+ 315 - 0
widget/css/addRecode.css

@@ -0,0 +1,315 @@
+*{
+  box-sizing: border-box;
+}
+.template_my_record{
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+.template_name{
+  font-size: 20px;
+  font-weight: bold;
+  color: #009FE8;
+  padding: 10px 0;
+}
+.my_record{
+  color: #009FE8;
+  font-size: 14px
+}
+.recode_contents{
+  background: #fff;
+  padding:  8px;
+  border-radius: 5px;
+}
+.row_col>label{
+  color: #333;
+  font-size: 16px;
+  padding: 15px 0 ;
+  position: relative;
+  width: 100%;
+}
+.row_col>label:after{
+  content: '';
+  position: absolute;
+  bottom: 0;
+  left: 0;
+  width: 100%;
+  height: 1px;
+  background: #ECF0F1;
+}
+.recode-warp{
+    padding: 10px 15px;
+    background: #009FE8;
+}
+.input-recode{
+    position: relative;
+}
+.title{
+    font-size: 16px;
+    color: #97A3B4;
+    font-weight: normal;
+    margin-bottom: 10px;
+}
+.title span{
+    color: red;
+    position: relative;
+    top: 2px;
+}
+.input-recode .input{
+    margin: 0;
+    height: 45px;
+    border: 1px solid #e1e5e9;
+    background: #ffffff;
+    font-size: 14px;
+    width: 100%;
+    -webkit-border-radius: 3px;
+    border-radius: 3px;
+    padding-left: 15px;
+    padding-right: 30px;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    color: #333;
+}
+.modula:not(:first-child){
+    margin-top: 18px;
+}
+.ico{
+    display: block;
+    position: absolute;
+    top: 16px;
+    right: 8px;
+    width: 18px;
+    height: 13px;
+    background: url(../icon/ico.png) no-repeat;
+    background-size: cover;
+}
+/*录音*/
+.input-recode audio{
+  width: 100%;
+}
+.upload-btn{
+    width: 100px;
+    height: 33px;
+    background: url(../icon/mp3.jpg);
+    background-size: cover;
+    display: block;
+    cursor: pointer;
+}
+.del-btn{
+    display: none;
+    width: 60px;
+    height: 30px;
+    line-height: 30px;
+    text-align: center;
+    color: #fff;
+    background: #07c160;
+    border-radius: 3px;
+    font-size: 14px;
+    margin-bottom: 10px;
+}
+/*文件*/
+.file-items-add{
+    border: 1px dashed #D9D9D9;
+    padding: 10px 10px 0 10px;
+    display: flex;
+    justify-content: flex-start;
+    flex-wrap: wrap;
+    box-sizing: border-box;
+}
+.file-width{
+    width: 33.3333333%;
+    box-sizing: border-box;
+    font-size: 14px;
+    color: #333;
+    margin-bottom: 10px;
+}
+.file-item-add{
+    text-align: center;
+}
+.file-item-add img{
+    width: 35px;
+    height: 35px;
+    margin-bottom: 5px;
+}
+.file-item-add p{
+    padding: 0 5px;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    display: -webkit-box;
+    -webkit-line-clamp: 2;
+    -webkit-box-orient: vertical;
+    height: auto;
+}
+.upload img{
+    width: 80px;
+    height: 80px;
+    margin-left: 15px;
+}
+/*图片*/
+.img-item{
+    text-align: center;
+}
+.img-item img{
+    width: 80px;
+    height: 80px;
+    border-radius: 3px;
+    object-fit: cover;
+}
+.img-items .upload{
+    text-align: center;
+}
+.img-items .upload img{
+    width: 80px;
+    height: 80px;
+    margin: 0;
+}
+/*视频*/
+.upload-btn1{
+    width: 100px;
+    height: 33px;
+    background: url(../icon/vedio.png);
+    background-size: cover;
+    display: block;
+    cursor: pointer;
+}
+.submit-btn{
+  width: 100%;
+  font-size: 18px;
+  background: #009fe8;
+  height: 55px;
+  line-height: 55px;
+  letter-spacing: 5px;
+  color: #fff;
+  border-radius: 3px;
+  margin-top: 20px;
+  margin-bottom: 10px;
+}
+/*检查项*/
+.radio-wrap{
+    font-size: 14px;
+    display: flex;
+    justify-content: flex-start;
+    flex-wrap: wrap;
+    padding-top: 10px;
+}
+.radio-wrap label{
+  margin-right: 10px;
+  padding: 5px 0;
+}
+.radio-wrap label input{
+  margin-right: 10px;
+}
+/*position*/
+.flex-space-between{
+    display: flex;
+    justify-content: space-between;
+    white-space: nowrap;
+    align-items: center;
+}
+.flex-space{
+    display: flex;
+    justify-content: space-between;
+    white-space: nowrap;
+    align-items: center;
+}
+.ico-map{
+    width: 25px;
+    height: 25px;
+    background: url("../icon/position.png") no-repeat;
+    background-position: center;
+    background-size: cover;
+}
+.position{
+    padding: 5px 0;
+    padding-left: 15px;
+    padding-right: 10px;
+    border-radius: 50px;
+    background: #F0F0F0;
+    font-size: 14px;
+    margin-top:10px;
+}
+.map1{
+    color: #009FE8;
+    margin-bottom: 5px;
+}
+.again{
+    color: #6C6F74;
+}
+.map-name {
+  width: 78%;
+}
+.names{
+  width: 85%;
+  white-space: normal;
+}
+#position_warp{
+  /*padding: 0 ;*/
+  padding-bottom: 5px;
+}
+.textarea{
+  height: 45px;
+  line-height: 1.5;
+}
+
+/*a类型 图标显示 css*/
+.a-recodeWrap-ul {
+    padding: 16px 16px;
+    background: #009FE8;
+    color: #232627;
+    font-size: 16px;
+    padding-bottom: 6px;
+}
+.a-recodeWrap-ul li{
+    padding: 12px 16px;
+    background: #fff;
+    border-radius: 3px;
+    position: relative;
+    padding-right: 32px;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+    margin-bottom: 10px;
+}
+.a-recodeWrap-ul li .a-addRecode{
+    position: absolute;
+    top: 15px;
+    right: 16px;
+    width: 12px;
+    height: 12px;
+    background: url('../icon/add.png') no-repeat;
+    background-size: cover;
+}
+/*图标*/
+.a-recodeWrap-ul-icon{
+    padding: 14px 16px;
+    background: #009FE8;
+    color: #FFFFFF;
+    font-size: 14px;
+    padding-bottom: 6px;
+    text-align: center;
+    display: flex;
+    justify-content: flex-start;
+    align-items: center;
+    flex-wrap: wrap;
+}
+.a-recodeWrap-ul-icon li{
+    width: 25%;
+    margin-bottom: 10px;
+
+}
+.a-recodeWrap-ul-icon img{
+    width: 45px;
+    height: 45px;
+    display: block;
+    margin: auto;
+    margin-bottom: 7px;
+    border-radius: 50%;
+    object-fit: cover;
+}
+.a-recodeWrap-ul-icon span{
+    display: block;
+    padding: 0 5px;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+}

File diff suppressed because it is too large
+ 3625 - 0
widget/css/animate.css


+ 82 - 0
widget/css/api.css

@@ -0,0 +1,82 @@
+html{
+	font-family: sans-serif;
+}
+html,body,header,section,footer,div,ul,ol,li,img,a,span,em,del,legend,center,strong,var,fieldset,form,label,dl,dt,dd,cite,input,hr,time,mark,code,figcaption,figure,textarea,h1,h2,h3,h4,h5,h6,p{
+	margin:0;
+	border:0;
+	padding:0;
+	font-style:normal;
+}
+html,body {
+	-webkit-touch-callout:none;
+	-webkit-text-size-adjust:none;
+	-webkit-tap-highlight-color:rgba(0, 0, 0, 0);
+	-webkit-user-select:none;
+	background-color: #fff;
+}
+nav,article,aside,details,main,header,footer,section,fieldset,figcaption,figure{
+	display: block;
+}
+img,a,button,em,del,strong,var,label,cite,small,time,mark,code,textarea{
+	display:inline-block;
+}
+header,section,footer {
+	position:relative;
+}
+ol,ul{
+	list-style:none;
+}
+input,button,textarea {
+	border:0;
+	margin:0;
+	padding:0;
+	font-size:1em;
+	line-height:1em;
+	/*-webkit-appearance:none;*/
+	background-color:rgba(0, 0, 0, 0);
+	outline: none;
+}
+span{
+	display:inline-block;
+}
+a:active, a:hover {
+  outline: 0;
+}
+a, a:visited{
+	text-decoration:none;
+}
+
+label, .wordWrap{
+    word-wrap: break-word;
+    word-break: break-all;
+}
+table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+td,th {
+  padding: 0;
+}
+.clearfix:after{
+	content: ' ';
+	display: block;
+	clear: both;
+	visibility:hidden;
+	line-height: 0;
+	height:0;
+}
+.loading_more{
+	display: block;
+	height: 1.5em;
+	width: 100%;
+}
+.loading_more:before {
+	display: inline-block; vertical-align: text-bottom;
+	content: ' '; height: 16px; width: 16px; margin-right: 6px;
+	background: url(../image/loading_more.gif) no-repeat center;
+	-webkit-background-size: contain;
+	background-size: contain;
+} 
+.loading_more:after {
+	content: '加载更多';	
+}

+ 159 - 0
widget/css/apiToast.css

@@ -0,0 +1,159 @@
+/*toast*/
+.api-toast {
+	background: rgba(0, 0, 0, 0.7);
+	text-align: center;
+	border-radius: 0.25rem;
+	color: #ffffff;
+	position: fixed;
+	z-index: 3;
+	top: 45%;
+	left: 50%;
+	width: 7.5em;
+	padding: 0.5rem;
+	margin-left: -3.75em;
+	margin-top: -4rem;
+	display: none;
+}
+.api-toast .api-iconfont {
+	display: block;
+	font-size: 2.6rem;
+}
+.api-toast-content {
+	font-size: 14px;
+  /*margin: 0 0 0.75rem;*/
+}
+.api-toast-loading {
+    background-color: #ffffff;
+    border-radius: 100%;
+    margin: 0.75rem 0;
+    -webkit-animation-fill-mode: both;
+        	animation-fill-mode: both;
+    border: 2px solid #ffffff;
+    border-bottom-color: transparent;
+    height: 3.25rem;
+    width: 3.25rem;
+    background: transparent !important;
+    display: inline-block;
+    -webkit-animation: rotate 1s 0s linear infinite;
+        	animation: rotate 1s 0s linear infinite;
+}
+/*基础动画类*/
+@keyframes rotate {
+    0% {
+        -webkit-transform: rotate(0deg) scale(1);
+            	transform: rotate(0deg) scale(1);
+    }
+    50% {
+        -webkit-transform: rotate(180deg) scale(1);
+            	transform: rotate(180deg) scale(1);
+    }
+    100% {
+        -webkit-transform: rotate(360deg) scale(1);
+            	transform: rotate(360deg) scale(1);
+    }
+}
+@-webkit-keyframes rotate {
+    0% {
+        -webkit-transform: rotate(0deg) scale(1);
+            	transform: rotate(0deg) scale(1);
+    }
+    50% {
+        -webkit-transform: rotate(180deg) scale(1);
+            	transform: rotate(180deg) scale(1);
+    }
+    100% {
+        -webkit-transform: rotate(360deg) scale(1);
+            	transform: rotate(360deg) scale(1);
+    }
+}
+@keyframes bounce {
+	0%, 100% {
+	-webkit-transform: scale(0.0);
+			transform: scale(0.0);
+	}
+	50% {
+	-webkit-transform: scale(1.0);
+			transform: scale(1.0);
+	}
+}
+@-webkit-keyframes bounce {
+	0%, 100% {
+		-webkit-transform: scale(0.0);
+				transform: scale(0.0);
+	}
+	50% {
+		-webkit-transform: scale(1.0);
+				transform: scale(1.0);
+	}
+}
+@keyframes fadeIn {
+    from { opacity: 0.3; }
+    to { opacity: 1; }
+}
+@-webkit-keyframes fadeIn {
+    from { opacity: 0.3; }
+    to { opacity: 1; }
+}
+@font-face {
+	font-family: "aui_iconfont";
+	src: url('aui-iconfont.ttf') format('truetype');
+}
+.api-iconfont {
+	position: relative;
+	font-family:"aui_iconfont" !important;
+	font-size: 0.7rem;
+	font-style:normal;
+	-webkit-font-smoothing: antialiased;
+	-moz-osx-font-smoothing: grayscale;
+}
+.aui-icon-menu:before { content: "\e6eb"; }
+.aui-icon-paper:before { content: "\e6ec"; }
+.aui-icon-info:before { content: "\e6ed"; }
+.aui-icon-question:before { content: "\e6ee"; }
+.aui-icon-left:before { content: "\e6f4"; }
+.aui-icon-right:before { content: "\e6f5"; }
+.aui-icon-top:before { content: "\e6f6"; }
+.aui-icon-down:before { content: "\e6f7"; }
+.aui-icon-share:before { content: "\e700"; }
+.aui-icon-comment:before { content: "\e701"; }
+.aui-icon-edit:before { content: "\e6d3"; }
+.aui-icon-trash:before { content: "\e6d4"; }
+.aui-icon-recovery:before { content: "\e6dc"; }
+.aui-icon-refresh:before { content: "\e6dd"; }
+.aui-icon-close:before { content: "\e6d8"; }
+.aui-icon-cart:before { content: "\e6df"; }
+.aui-icon-star:before { content: "\e6e0"; }
+.aui-icon-plus:before { content: "\e6e3"; }
+.aui-icon-minus:before { content: "\e62d"; }
+.aui-icon-correct:before { content: "\e6e5"; }
+.aui-icon-search:before { content: "\e6e6"; }
+.aui-icon-gear:before { content: "\e6e8"; }
+.aui-icon-map:before { content: "\e6d2"; }
+.aui-icon-location:before { content: "\e6d1"; }
+.aui-icon-image:before { content: "\e6ce"; }
+.aui-icon-phone:before { content: "\e6c4"; }
+.aui-icon-camera:before { content: "\e6cd"; }
+.aui-icon-video:before { content: "\e6cc"; }
+.aui-icon-qq:before { content: "\e6cb"; }
+.aui-icon-wechat:before { content: "\e6c9"; }
+.aui-icon-weibo:before { content: "\e6c8"; }
+.aui-icon-note:before { content: "\e6c6"; }
+.aui-icon-mail:before { content: "\e6c5"; }
+.aui-icon-wechat-circle:before { content: "\e6ca"; }
+.aui-icon-home:before { content: "\e706"; }
+.aui-icon-forward:before { content: "\e6d9"; }
+.aui-icon-back:before { content: "\e6da"; }
+.aui-icon-laud:before { content: "\e64b"; }
+.aui-icon-lock:before { content: "\e6ef"; }
+.aui-icon-unlock:before { content: "\e62f"; }
+.aui-icon-like:before { content: "\e62b"; }
+.aui-icon-my:before { content: "\e610"; }
+.aui-icon-more:before { content: "\e625"; }
+.aui-icon-mobile:before { content: "\e697"; }
+.aui-icon-calendar:before { content: "\e68a"; }
+.aui-icon-date:before { content: "\e68c"; }
+.aui-icon-display:before { content: "\e612"; }
+.aui-icon-hide:before { content: "\e624"; }
+.aui-icon-pencil:before { content: "\e615"; }
+.aui-icon-flag:before { content: "\e6f1"; }
+.aui-icon-cert:before { content: "\e704"; }

二進制
widget/css/aui-iconfont.ttf


File diff suppressed because it is too large
+ 2718 - 0
widget/css/aui.css


+ 411 - 0
widget/css/popoPicker.css

@@ -0,0 +1,411 @@
+.p-scroll{
+    position: fixed;
+    bottom: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+    font-family: -apple-system,Helvetica Neue,Helvetica,Arial,sans-serif;
+    -webkit-tap-highlight-color: rgba(0,0,0,0);
+    font-size: 14px;
+    z-index: 10000;
+}
+.p-select-mask{
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+    cursor: pointer;
+    background: rgba(0,0,0,.7);
+    -webkit-animation: p-scroll-fade-in .3s ease both;
+}
+.p-scroll.hide .p-select-mask{
+    -webkit-animation: p-scroll-fade-out .3s ease both;
+}
+.p-select-wrap{
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+    display: -webkit-flex;
+    -webkit-align-items: center;
+    -webkit-justify-content: center;
+}
+.p-select-main{
+    display: -webkit-flex;
+    -webkit-flex-direction: column;
+    position: absolute;
+    bottom: 0;
+    left: 0;
+    right: 0;
+    z-index: 2;
+    background: #fff;
+    box-shadow: 0 -5px 10px rgba(0,0,0,.1);
+    -webkit-animation: p-scroll-in .3s ease both;
+}
+.p-scroll.hide .p-select-main{
+    -webkit-animation: p-scroll-out .3s ease both;
+}
+@-webkit-keyframes p-scroll-in {
+    0%{ -webkit-transform: translate3d(0,100%,0);}
+    100%{ -webkit-transform: translate3d(0,0,0);}
+}
+@-webkit-keyframes p-scroll-out {
+    0%{ -webkit-transform: translate3d(0,0,0);}
+    100%{ -webkit-transform: translate3d(0,100%,0);}
+}
+@-webkit-keyframes p-scroll-fade-in {
+    0%{ opacity: 0;}
+    100%{ opacity: 1;}
+}
+@-webkit-keyframes p-scroll-fade-out {
+    0%{ opacity: 1;}
+    100%{ opacity: 0;}
+}
+.p-select-head{
+    position: relative;
+    height: 45px;
+    line-height: 45px;
+    display: -webkit-flex;
+    -webkit-align-items: center;
+    -webkit-justify-content: space-between;
+    background: #f2f2f2;
+    z-index: 5;
+}
+.p-select-head:before{
+    content: "";
+    position: absolute;
+    bottom: 0;
+    left: 0;
+    width: 100%;
+    height: 1px;
+    -webkit-transform: scaleY(.5);
+    background-color: #d5d5d6;
+}
+.p-select-title{
+    -webkit-flex: 1;
+    font-size: 18px;
+    color: #333;
+    text-align: center;
+}
+.p-select-head a{
+    display: block;
+    padding: 0 15px;
+    height: 45px;
+    line-height: 45px;
+    font-size: 15px;
+    text-decoration: none;
+    color: #007aff;
+}
+.p-select-foot{
+    position: relative;
+    display: -webkit-flex;
+    -webkit-align-items: center;
+    background-color: #fff;
+}
+.p-select-foot:before{
+    content: "";
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 1px;
+    background-color: #d5d5d6;
+    -webkit-transform: scaleY(0.5);
+}
+.p-select-foot a{
+    position: relative;
+    display: block;
+    height: 45px;
+    line-height: 45px;
+    font-size: 18px;
+    text-decoration: none;
+    color: #007aff;
+    -webkit-flex: 1;
+    text-align: center;
+}
+.p-select-foot a:before{
+    content: "";
+    position: absolute;
+    top: 0;
+    right: 0;
+    height: 100%;
+    width: 1px;
+    background-color: #d5d5d6;
+    -webkit-transform: scaleX(0.5);
+}
+.p-select-foot a:last-child:before{
+    display: none;
+}
+.p-select-body{
+    position: relative;
+    margin: 20px auto;
+    width: 100%;
+    display: -webkit-flex;
+    -webkit-align-items: center;
+    -webkit-justify-content: center;
+    overflow: hidden;
+    box-sizing: border-box;
+}
+.p-select-body ul{
+    list-style-type: none;
+}
+.p-select-item {
+    position: relative;
+    display: -webkit-flex;
+    -webkit-align-items: center;
+    height: 170px;
+    text-align: center;
+    /* overflow: hidden; */
+}
+.p-select-col{
+    height: 100%;
+    position: relative;
+}
+.p-select-ul {
+    margin: 0;
+    padding: 0;
+    position: relative;
+}
+.p-select-list,
+.p-select-wheel,
+.p-select-line{
+    position: absolute;
+    top: 50%;
+    left: 0;
+    right: 0;
+    height: 34px;
+    margin-top: -17px;
+    box-sizing: border-box;
+    -webkit-transition: all .3s;
+}
+.p-select-wheel {
+    padding: 0;
+    -webkit-transform-style: preserve-3d;
+    height: 34px;
+    z-index: 1;
+
+}
+.p-select-list{
+    position: relative;
+    top: 68px;
+    margin-top: 0;
+    z-index: 45;
+}
+.p-select-line {
+    height: 34px;
+    z-index: 100;
+    pointer-events: none;
+    box-sizing: border-box;
+}
+.p-select-line:before,
+.p-select-line:after{
+    content: "";
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    height: 1px;
+    -webkit-transform: scaleY(.5);
+    background: #f3f3f3;
+}
+.p-select-line:after{
+    top: auto;
+    bottom: 0;
+}
+.p-select-label{
+    margin: 0 -5px;
+    min-width: 10px;
+    display: -webkit-flex;
+    -webkit-align-items: center;
+    -webkit-justify-content: center;
+    box-sizing: border-box;
+    white-space: nowrap;
+    z-index: 100;
+    color: #666;
+}
+.p-select-label span{
+    display: block;
+    position: relative;
+    top: -3px;
+    font-size: 22px;
+    font-weight: normal;
+    text-align: center;
+    z-index: 50;
+}
+
+.p-select-ul>li,
+.p-select-wheel>li{
+    white-space: nowrap;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    width: 100%;
+    padding: 0 10px;
+    line-height: 34px;
+    font-size: 15px;
+    box-sizing: border-box;
+    cursor: pointer;
+    -webkit-user-select: none;
+    text-align: center;
+}
+.p-select-ul>li{
+    color: #666;
+    font-size: 18px;
+}
+.p-select-wheel>li {
+    -webkit-backface-visibility: hidden;
+    position: absolute;
+    top: 0;
+    color: #999;
+}
+.p-select-wheel>li:active{
+    /* opacity: .7;*/
+}
+.p-select-wheel>li.visible{
+    display: list-item;
+}
+.p-select-time-split-1{
+    position: relative;
+    top: 0;
+    right: 0;
+    bottom: 15px;
+    margin: 0 15px;
+    width: 1px;
+    height: 160px;
+    -webkit-transform: scaleX(.7) translateZ(200px);
+    background: -webkit-linear-gradient(90deg,#fff,#ccc 15%,#ccc 85%,#fff);
+}
+
+/*is3d*/
+.p-select-wrap.p-3d .p-select-body{
+    -webkit-perspective: 1200;
+}
+.p-select-wrap.p-3d .p-select-list{
+    height: 34px;
+    overflow:hidden;
+    background-color: #fff;
+}
+.p-select-wrap.p-3d .p-select-ul>li,
+.p-select-wrap.p-3d .p-select-label{
+    color: #2a2b2c;
+}
+.p-select-wrap.p-3d .p-select-body:before{
+    content: "";
+    position: absolute;
+    top: -15px;
+    bottom: -15px;
+    left: 0;
+    right: 0;
+    background: -webkit-linear-gradient(#fff,rgba(255,255,255,0) 52%,rgba(2555,255,255,0) 48%,#fff);
+    pointer-events: none;
+    -webkit-transform: translate3d(0,0,120px);
+    z-index: 5;
+}
+.p-select-wrap.p-3d .p-select-line:before{
+    top: 1px;
+}
+.p-select-wrap.p-3d .p-select-line:after{
+    bottom: 1px;
+}
+
+
+.p-select-wrap.dark .p-select-main,
+.p-select-wrap.dark .p-select-body{
+    background-color: #080808;
+}
+.p-select-wrap.dark .p-select-body:before{
+    background: -webkit-linear-gradient(#080808,rgba(8,8,8,0) 52%,rgba(8,8,8,0) 48%,#080808);
+}
+.p-select-wrap.dark .p-select-head{
+    background-color: #1c1c1c;
+    border-bottom: none;
+}
+.p-select-wrap.dark .p-select-head:before{
+    background-color: transparent;
+}
+.p-select-wrap.dark .p-select-head a{
+    color: #ff8400;
+}
+.p-select-wrap.dark .p-select-list,
+.p-select-wrap.dark .p-select-ul>li,
+.p-select-wrap.dark .p-select-wheel>li{
+    background-color: #080808;
+}
+.p-select-wrap.dark .p-select-line:before,
+.p-select-wrap.dark .p-select-line:after{
+    background-color: #444;
+}
+.p-select-wrap.dark .p-select-time-split-1{
+    background: -webkit-linear-gradient(90deg,transparent,#333 15%,#333 85%,transparent);
+}
+.p-select-wrap.dark .p-select-title,
+.p-select-wrap.dark .p-select-label,
+.p-select-wrap.dark .p-select-ul>li{
+    color: #fff;
+}
+.p-select-wrap.dark .p-select-foot{
+    border-top: none;
+    background-color: #444;
+}
+.p-select-wrap.dark .p-select-foot a{
+    color: #ff8400;
+}
+.p-select-wrap.dark .p-select-foot:before,
+.p-select-wrap.dark .p-select-foot a:before{
+    background-color: #444;
+}
+
+/*center*/
+.p-center{
+    position: relative;
+    top: auto;
+    left: auto;
+    -webkit-transform: none;
+    width: auto;
+}
+.p-center .p-select-head{
+    background-color: #f2f2f2;
+}
+.p-center .p-select-body{
+    min-width: 300px;
+    padding: 0 25px;
+    box-sizing: border-box;
+    background-color: #fff;
+}
+.p-center .p-select-body:before{
+    background: -webkit-linear-gradient(#f7f7f7,rgba(245,245,245,0) 52%,rgba(245,245,245,0) 48%,#f7f7f7);
+}
+.p-center .p-select-main{
+    position: relative;
+    margin: auto;
+    bottom: auto;
+    max-width: 400px;
+    border-radius: 10px;
+    overflow: hidden;
+    -webkit-animation: p-scroll-fade-in .3s ease both;
+}
+.p-scroll.hide .p-center .p-select-main{
+    -webkit-animation: p-scroll-fade-out .3s ease both;
+}
+.p-center .p-select-line{
+    border-color: #ccc;
+}
+.p-center .p-select-list{
+    background-color: #fff;
+}
+
+
+/*center dark*/
+.p-center.dark .p-select-wrap.dark{
+    border: none;
+}
+.p-center.dark .p-select-head{
+    background-color: #000;
+}
+.p-center.dark .p-select-head:before{
+    background-color: #444;
+}
+.p-center.dark .p-select-foot{
+    background-color: #000;
+}

+ 881 - 0
widget/css/projeck.css

@@ -0,0 +1,881 @@
+button,
+input {
+  outline: none;
+}
+.api_layout {
+  width: 100%;
+  position: relative;
+}
+.hide {
+  display: none;
+}
+.show {
+  display: block;
+}
+.age_list a {
+  display: block;
+}
+.api_swiper_wrap {
+  width: 100%;
+  padding: 10px 15px  0 15px ;
+}
+.api_swiper_wrap .swiper-pagination-fraction {
+  width: 15%;
+  left: inherit;
+  right: 10px;
+  bottom: 6px;
+  color: #fff;
+  z-index: 1001;
+}
+.age_list img {
+  width: 100%;
+  height: 185px;
+  display: block;
+  object-fit: cover;
+}
+.api_duty {
+  border-bottom: 1px solid #ebebeb;
+}
+.api_title {
+  font-size: 18px;
+  margin: 15px  0 0 0;
+  padding: 0 20px 0 55px;
+  position: relative;
+  color: #121212;
+}
+.api_title .News_icon {
+  width: 25px;
+  height: 25px;
+  position: absolute;
+  top: 0;
+  left: 20px;
+  background: url("../image/newsIcon.png") no-repeat;
+  background-size: cover;
+}
+.api_title img {
+  height: 25px;
+  position: absolute;
+  top: 0;
+  left: 20px;
+}
+.api_list {
+  font-size: 15px;
+  color: #6c6f74;
+  padding: 0 20px;
+  margin-bottom: 13px;
+}
+.api_list li {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: normal;
+}
+.api_more {
+  font-size: 14px;
+  color: #6c6f74;
+  position: absolute;
+  top: 3px;
+  right: 20px;
+  font-weight: normal;
+}
+.api_newsList {
+  position: relative;
+  margin-top: 3px;
+  padding: 0 20px;
+  font-size: 16px;
+}
+.api_newsList li {
+  display: flex;
+  justify-content: flex-start;
+  display: -webkit-flex;
+  -webkit-justify-content: flex-start;
+  align-items: center;
+  padding: 10px 0;
+  position: relative;
+}
+.api_newsList li:after {
+  content: '';
+  display: table;
+  position: absolute;
+  bottom: 0;
+  left: 0;
+  width: 100%;
+  height: 1px;
+  background: #f5f7f8;
+}
+.api_newsList li p {
+  color: #121212;
+  font-size: 14px;
+}
+.api_newsList li img {
+  width: 90px;
+  height: 50px;
+  margin-right: 11px;
+  object-fit: cover;
+}
+.api_news_content {
+  padding-right: 20px;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+.api_newsList_item {
+  position: relative;
+  height: 34px;
+  line-height: 34px;
+  border-bottom: 1px solid #ebebeb;
+  font-size: 13px;
+}
+.api_news_more {
+  position: absolute;
+  top: 12px;
+  right: 0;
+  width: 10px;
+  height: 10px;
+  background: url("../image/more.png") no-repeat;
+  background-size: cover;
+}
+.api_line {
+  background: #ecf0f1;
+  height: 2px;
+}
+.api_h2 {
+  text-align: center;
+  color: #9b9b9b;
+  font-weight: normal;
+  margin-top: 13px;
+  font-size: 16px;
+}
+.api_office {
+  border-bottom: 1px solid #ebebeb;
+}
+.api_office:last-child {
+  padding-bottom: 30px;
+}
+.api_row {
+  width: 100%;
+  padding: 0 20px;
+  display: flex;
+  display: -webkit-flex;
+  -webkit-justify-content: space-between;
+  justify-content: space-between;
+  flex-wrap: nowrap;
+  -webkit-flex-wrap: nowrap;
+}
+.api_col {
+  font-size: 12px;
+  display: inline-block;
+  height: 42px;
+  line-height: 42px;
+  text-align: center;
+  color: #009fe8;
+  border: 1px solid #009fe8;
+  border-radius: 10px;
+  width: 24%;
+}
+#api_grid img {
+  width: 45px;
+  height: 45px;
+  position: relative;
+  margin: auto;
+  margin-bottom: 10px;
+}
+.api_page span {
+  color: #fff !important;
+}
+.api_page_text {
+  position: absolute;
+  width: 100%;
+  bottom: 6px;
+  left: 0;
+  z-index: 1000;
+}
+.api_banner_info {
+  font-size: 14px;
+  width: 75%;
+  height: 24px;
+  padding-left: 5px;
+  line-height: 24px;
+  color: #fff;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+.header-login {
+  width: 100%;
+  height: 50px !important;
+  background-color: #009fe8;
+  text-align: center;
+  position: relative;
+}
+.backBtn {
+  position: absolute;
+  height: 30px;
+  left: 0;
+  margin-top: 10px;
+  margin-left: 15px;
+  z-index: 1000;
+}
+.api_text {
+  height: 50px;
+  line-height: 50px;
+  margin: 0;
+  font-size: 18px;
+  color: #fff;
+  width: 70%;
+  margin: auto;
+}
+.api_title_text {
+  height: 45px;
+  line-height: 45px;
+  width: 100%;
+  box-sizing: border-box;
+  color: #afb6c3;
+  font-size: 13px;
+  background: #f3f6fa;
+  padding-left: 15px;
+}
+.api_mail_items {
+  width: 100%;
+  box-sizing: border-box;
+  padding: 18px 24px 0 24px;
+  display: flex;
+  display: -webkit-flex;
+  -webkit-justify-content: space-between;
+  justify-content: space-between;
+  flex-wrap: wrap;
+}
+.api_mail_items .api_mail_item {
+  box-sizing: border-box;
+  border: 1px solid #ebebeb;
+  width: 145px;
+  padding: 15px 3px 10px 18px;
+  border-radius: 5px;
+  margin-bottom: 25px;
+  position: relative;
+}
+.api_mail_items .api_mail_item .api_mail_logo {
+  width: 50px;
+  height: 50px;
+  margin-bottom: 6px;
+  border-radius: 50%;
+}
+.api_mail_items .api_mail_item .api_more01 {
+  position: absolute;
+  top: 3px;
+  right: 3px;
+  width: 22px;
+  height: 30px;
+}
+.api_mail_items .api_mail_item p {
+  margin-bottom: 15px;
+  font-size: 12px;
+}
+.api_mail_items .api_mail_item p span {
+  font-size: 12px;
+  color: #97a3b4;
+}
+.api_mail_items .api_mail_item .api_mail_details {
+  font-size: 12px;
+  color: #009fe8;
+}
+.api_personal_header {
+  background: #009fe8;
+  width: 100%;
+  text-align: center;
+  padding: 20px 0;
+  border-top: 1px solid #37b0e9;
+}
+.api_personal_header .api_header_img {
+  width: 100px;
+  height: 100px;
+  border-radius: 50%;
+  margin: auto;
+  background: url("") no-repeat;
+  background-size: cover;
+}
+.api_personal_header p {
+  margin-bottom: 13px;
+  color: #fff;
+  font-size: 18px;
+}
+.api_personal_header .api_personal_name {
+  font-weight: bold;
+  font-size: 20px;
+}
+.api_personal_header .api_dep {
+  font-size: 14px;
+}
+.api_personal_header .api_personal_more {
+  height: 31px;
+  line-height: 31px;
+  background: #ecf0f1;
+  color: #2c3e50;
+  font-size: 12px;
+  border-radius: 25px;
+}
+.api_phoneBind {
+  width: 100%;
+  height: 38px;
+  line-height: 38px;
+  box-sizing: border-box;
+  position: relative;
+  color: #7f8c8d;
+  padding-left: 37px;
+  font-size: 12px;
+}
+.api_phoneBind img {
+  width: 17px;
+  height: 17px;
+  position: absolute;
+  top: 10px;
+  left: 15px;
+}
+.api_function .ico {
+  height: 35px;
+  display: inline-block;
+}
+.api_function .api_icon1 {
+  background: url("../image/news.png") no-repeat;
+  background-size: cover;
+  width: 39px;
+}
+.api_function .api_icon2 {
+  background: url("../image/collection.png") no-repeat;
+  background-size: cover;
+  width: 35px;
+  height: 35px;
+}
+.api_function .api_icon3 {
+  background: url("../image/explain.png") no-repeat;
+  background-size: cover;
+  width: 30px;
+}
+.api_function_items .api_function_item {
+  height: 40px;
+  line-height: 40px;
+  padding-left: 41px;
+  color: #000;
+  font-size: 15px;
+  position: relative;
+  border-bottom: 1px solid #ebebeb;
+}
+.api_function_items img {
+  position: absolute;
+  top: 21px;
+  width: 18px;
+  height: 18px;
+}
+.api_function_items .api_pass_img {
+  left: 15px;
+}
+.api_function_items .api_more_img {
+  right: 20px;
+}
+.api_forget_phone {
+  padding: 15px 20px;
+}
+.api_forget_phone .api_phone {
+  width: 100%;
+  height: 49px;
+  margin-bottom: 14px;
+  box-sizing: border-box;
+  display: flex;
+  display: -webkit-flex;
+  -webkit-justify-content: space-between;
+  justify-content: space-between;
+  flex-wrap: nowrap;
+}
+.api_forget_phone input::-webkit-input-placeholder {
+  font-size: 14px;
+  position: relative;
+}
+.api_forget_phone input {
+  background-color: #fff;
+  -webkit-tap-highlight-color: rgba(255, 0, 0, 0);
+  outline: none;
+  box-shadow: none;
+  border-radius: 0;
+  padding-left: 22px;
+  border: none;
+  width: 100%;
+  height: 100%;
+  box-sizing: border-box;
+  font-size: 14px;
+}
+.api_forget_phone .api_vali {
+  width: 180px;
+}
+.api_forget_phone .api_btn_vali {
+  display: inline-block;
+  width: 107px;
+  line-height: 49px;
+  text-align: center;
+  background: #009fe8;
+  border: none;
+  font-size: 14px;
+  color: #fff;
+}
+.api_forget_phone .api_bnt {
+  width: 100%;
+  height: 49px;
+  line-height: 49px;
+  background: #009fe8;
+  color: #fff;
+  text-align: center;
+  font-size: 14px;
+}
+.api_nav {
+  width: 100%;
+  height: 49px;
+  background: #fff;
+  box-sizing: border-box;
+  display: block;
+}
+.header-nav {
+  box-sizing: border-box;
+}
+.header-nav-items {
+  list-style: none;
+  padding: 0;
+  margin: 0;
+  height: 100%;
+  width: 100%;
+  transition: all 1s;
+  box-sizing: border-box;
+  overflow: hidden;
+  position: relative;
+}
+.header-nav-items :after {
+  content: "";
+  position: absolute;
+  bottom: 0;
+  left: 0;
+  width: 100%;
+  height: 1px;
+  background: #ebebeb;
+}
+.header-nav-items li {
+  position: relative;
+  font-size: 17px;
+  line-height: 49px;
+  padding: 0 16px;
+  white-space: nowrap;
+  text-align: center;
+}
+.header-nav-items .active::after {
+  position: absolute;
+  content: "";
+  display: block;
+  bottom: 0;
+  left: 0;
+  width: 100%;
+  height: 2.5px;
+  background: #009fe8;
+}
+.header_img {
+  width: 50px;
+  height: 50px;
+  background: url("") no-repeat;
+  background-size: cover;
+  border-radius: 50%;
+}
+.api_lists {
+  background-image: none;
+}
+.api_lists span {
+  color: #bdc3c7;
+}
+.api_lists .api_bind_img {
+  width: 17px;
+  height: 17px;
+  background: url("../image/bind.png") no-repeat;
+  background-size: cover;
+  position: absolute;
+  top: 10px;
+  right: 15px;
+}
+.api_bottom {
+  padding: 15px 0;
+  text-align: center;
+  background: #f2f2f2;
+  color: #bdc3c7;
+}
+.api_layout .aui-list .aui-list-item {
+  height: 42px;
+  min-height: 42px;
+}
+.api_layout .aui-list .aui-list-item-inner {
+  height: 42px;
+  line-height: 42px;
+  min-height: 42px;
+  font-size: 14px;
+}
+.api_layout .aui-list .aui-list-item-title {
+  font-size: 14px;
+}
+.api_leader_wrap {
+  padding: 15px;
+  border-bottom: 1px solid #ebebeb;
+}
+.api_leader_wrap .api_title_or {
+  color: #bdc3c7;
+  font-size: 16px;
+}
+.api_leader_wrap .api_leader_content {
+  width: 100%;
+  border-radius: 10px;
+  padding: 33px 30px 23px 30px;
+  box-sizing: border-box;
+  border: 1px solid #ebebeb;
+  margin-top: 20px;
+  color: #002257;
+}
+.api_leader_wrap .api_leader_content h1 {
+  margin-bottom: 30px;
+  font-size: 22px;
+}
+.api_leader_wrap .api_leader_content p {
+  font-size: 14px;
+  margin-bottom: 18px;
+}
+.api_leader_wrap .api_leader_content .api_leader_head {
+  width: 50px;
+  height: 50px;
+  border-radius: 50%;
+  object-fit: cover;
+  margin: auto;
+  margin-bottom: 5px;
+}
+.api_leader_wrap1 {
+  padding: 20px 18px 10px 18px;
+}
+.api_leader_wrap1 h1 {
+  color: #002257;
+  font-size: 22px;
+  margin-bottom: 20px;
+}
+.api_leader_wrap1 .api_leader_item1 li {
+  margin-bottom: 20px;
+  font-size: 15px;
+}
+.api_leader_wrap1 .api_leader_item1 li span {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+  color: #bdc3c7;
+}
+.api_leader_wrap1 .api_leader_item1 li p {
+  color: #002257;
+}
+.api_news_item {
+  padding: 10px;
+}
+.api_news_item li {
+  padding: 15px 0 15px 10px;
+  display: flex;
+  justify-content: flex-start;
+  flex-wrap: nowrap;
+  display: -webkit-flex;
+  -webkit-justify-content: flex-start;
+  -webkit-flex-wrap: nowrap;
+  align-items: center;
+  -webkit-align-items: center;
+  position: relative;
+  -webkit-box-sizing: border-box;
+  box-sizing: border-box;
+  box-shadow: 0 2px 4px 0 #a6a6a6;
+  border-radius: 5px;
+  margin-bottom: 10px;
+}
+.api_news_item li .api_date {
+  position: absolute;
+  bottom: 15px;
+  right: 20px;
+  font-size: 11px;
+  color: #bdc3c7;
+}
+.api_news_item li .api_news_num {
+  position: absolute;
+  color: #fff;
+  background-color: #ff0037;
+  width: 20px;
+  height: 20px;
+  line-height: 2.2;
+  text-align: center;
+  border-radius: 50%;
+  font-size: 10px;
+  top: 15px;
+  right: 20px;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+.api_news_item li .api_ceil {
+  width: 10px;
+  height: 100%;
+  background-color: #009fe8;
+  position: absolute;
+  top: 0;
+  right: 0;
+  border-top-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+}
+.api_news_item li:last-child {
+  margin-bottom: 0;
+}
+.api_news_item .api_titles {
+  width: 60%;
+  padding-left: 10px;
+}
+.api_news_item .api_titles .api_news_title {
+  font-size: 15px;
+  margin-bottom: 8px;
+  font-weight: bold;
+}
+.api_news_item .api_titles p {
+  font-size: 14px;
+  color: #bdc3c7;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+.api_news_item .api_titles .api_ico {
+  display: inline-block;
+  width: 15px;
+  height: 15px;
+  background: url("../image/icons.png") no-repeat;
+  background-size: cover;
+  position: relative;
+  top: 2px;
+}
+.api_news_item .news_img {
+  width: 45px;
+  height: 45px;
+  background: url("../image/news_img.png") no-repeat;
+  background-size: cover;
+}
+@media screen and (max-width: 320px) {
+  .api_mail_items .api_mail_item {
+    width: 130px;
+  }
+  .api_forget_phone .api_vali {
+    width: 160px;
+  }
+  .api_forget_phone .api_btn_vali {
+    width: 100px;
+  }
+  .api_news_item .api_titles {
+    width: 50%;
+  }
+}
+@media screen and (min-width: 414px) {
+  .api_mail_items .api_mail_item {
+    width: 170px;
+  }
+}
+@media screen and (min-width: 411px) {
+  .api_mail_items .api_mail_item {
+    width: 170px;
+  }
+}
+@media (min-width: 380px) and (max-width: 400px) {
+  .api_mail_items .api_mail_item {
+    width: 160px;
+  }
+}
+/*搜索条*/
+.aui-searchbar {
+  display: -webkit-box;
+  -webkit-box-pack: center;
+  -webkit-box-align: center;
+  height: 2.2rem;
+  overflow: hidden;
+  width: 100%;
+  background-color: #ebeced;
+  color: #9e9e9e;
+  -webkit-backface-visibility: hidden;
+  backface-visibility: hidden;
+}
+.aui-searchbar.focus {
+  -webkit-box-pack: start;
+}
+.aui-searchbar-input {
+  margin: 0 0.5rem;
+  background-color: rgba(255, 255, 255, 0.3);
+  border-radius: 50px;
+  height: 31px;
+  line-height: 31px;
+  font-size: 0.7rem;
+  position: relative;
+  padding-left: 10px;
+  display: -webkit-box;
+  -webkit-box-flex: 1;
+}
+.aui-searchbar form {
+  width: 95%;
+}
+.aui-searchbar-input input {
+  color: #666666;
+  width: 87%;
+  padding: 0;
+  margin: 0;
+  height: 31px;
+  line-height: 32px;
+  border: 0;
+  -webkit-appearance: none;
+  font-size: 0.7rem;
+  margin-left: 33px;
+  color: #fff;
+}
+.aui-searchbar input::-webkit-input-placeholder {
+  color: #ccc;
+}
+.aui-searchbar .aui-iconfont {
+  line-height: 1.4rem;
+  margin-right: 0.25rem;
+  color: #9e9e9e !important;
+}
+.aui-searchbar .aui-searchbar-btn {
+  font-size: 0.7rem;
+  color: #666666;
+  margin-right: -2.2rem;
+  width: 2.2rem;
+  height: 1.4rem;
+  padding-right: 0;
+  line-height: 1.4rem;
+  text-align: center;
+  -webkit-transition: all .3s;
+  transition: all .3s;
+}
+.aui-searchbar-clear-btn {
+  position: absolute;
+  right: 5px;
+  top: 3px;
+  width: 1.1rem;
+  height: 1.1rem;
+  background: #eeeeee;
+  border-radius: 50%;
+  line-height: 0.6rem;
+  text-align: center;
+  display: none;
+}
+.aui-searchbar-clear-btn .aui-iconfont {
+  font-size: 0.6rem;
+  margin: 0 auto;
+  position: relative;
+  top: -2px;
+}
+.aui-searchbar .aui-searchbar-btn .aui-iconfont {
+  color: #666666;
+}
+.aui-icon-search:before {
+  content: "\e6e6";
+}
+.aui-iconfont {
+  position: relative;
+  font-family: "aui_iconfont" !important;
+  font-size: 0.7rem;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.duty {
+  padding: 6px 22px 0 22px;
+}
+.duty .duty_title {
+  font-size: 18px;
+  color: #fff;
+  padding-left: 34px;
+  position: relative;
+  margin-bottom: 6px;
+}
+.duty .duty_icon {
+  background: url("../image/gonggao.png") no-repeat;
+  display: block;
+  width: 22px;
+  height: 22px;
+  background-size: cover;
+  position: absolute;
+  left: 0;
+  top: 1px;
+}
+.duty .duty_content {
+  font-size: 14px;
+  color: #fff;
+}
+.item {
+  margin-bottom: 20px;
+}
+.flex-space {
+  display: -webkit-flex;
+  display: flex;
+  justify-content: space-between;
+  -webkit-justify-content: space-between;
+  flex-wrap: nowrap;
+  -webkit-flex-wrap: nowrap;
+  align-items: center;
+}
+.flex-start {
+  display: -webkit-flex;
+  display: flex;
+  justify-content: flex-start;
+  -webkit-justify-content: flex-start;
+  flex-wrap: nowrap;
+  -webkit-flex-wrap: nowrap;
+  align-items: center;
+}
+.after-border:after {
+  content: '';
+  display: block;
+  position: absolute;
+  left: 0;
+  bottom: 0;
+  background: #ebeef3;
+  right: 0;
+  height: 1px;
+}
+.relative {
+  position: relative;
+}
+.noText {
+  width: 91px;
+  height: 134px;
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  margin: auto;
+}
+.noText img {
+  width: 100%;
+}
+#tips {
+  position: absolute;
+  top: 0;
+  left: 0;
+  background: #fff;
+  width: 100%;
+  height: 100%;
+}
+#tips p {
+  width: 200px;
+  height: 150px;
+  line-height: 30px;
+  text-align: center;
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0;
+  margin: auto;
+  color: #ccc;
+}
+#tips i {
+  width: 100px;
+  height: 100px;
+  display: block;
+  background: url("../image/error.png") no-repeat;
+  background-size: contain;
+  margin: auto;
+}

+ 916 - 0
widget/css/projeck.less

@@ -0,0 +1,916 @@
+@bjheader:#009fe8;
+@border:#ebebeb;
+@textColor:#bdc3c7;
+  button,input{
+    outline: none;
+  }
+.api_layout{
+  width: 100%;
+  position: relative;
+}
+.hide{
+  display: none;
+}
+.show{
+  display: block;
+}
+.age_list a{
+  display: block;
+}
+.api_swiper_wrap{
+  width: 100%;
+  padding: 10px 15px  0 15px ;
+}
+.api_swiper_wrap .swiper-pagination-fraction {
+  width: 15%;
+  left: inherit;
+  right: 10px;
+  bottom: 6px;
+  color: #fff;
+  z-index: 1001
+}
+.age_list img{
+  width: 100%;
+  height: 185px;
+  display: block;
+  object-fit: cover;
+}
+//值班
+.api_duty{
+  border-bottom: 1px solid #ebebeb;
+}
+.api_title{
+  font-size: 18px;
+  margin: 15px  0 0 0;
+  padding: 0 20px 0 55px;
+  position: relative;
+  color: #121212;
+  .News_icon{
+    width: 25px;
+    height: 25px;
+    position: absolute;
+    top: 0;
+    left: 20px;
+    background: url("../image/newsIcon.png") no-repeat;
+    background-size: cover;
+  }
+  img{
+    height: 25px;
+    position: absolute;
+    top: 0;
+    left: 20px;
+  }
+}
+.api_list{
+  font-size: 15px;
+  color: #6c6f74;
+  padding: 0 20px;
+  margin-bottom:  13px;
+}
+.api_list li{
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: normal;
+}
+.api_more{
+  font-size: 14px;
+  color: #6c6f74;
+  position: absolute;
+  top:3px;
+  right: 20px;
+  font-weight: normal;
+}
+.api_news{
+  // margin-bottom: 26px;
+}
+.api_newsList{
+  position: relative;
+  margin-top: 3px;
+  padding: 0 20px;
+  font-size: 16px;
+  li{
+    display: flex;
+    justify-content: flex-start;
+    display: -webkit-flex;
+    -webkit-justify-content: flex-start;
+    align-items: center;
+    padding: 10px 0;
+    position: relative;
+    &:after{
+      content: '';
+      display:table;
+      position: absolute;
+      bottom: 0;
+      left: 0;
+      width: 100%;
+      height: 1px;
+      background: #f5f7f8;
+    }
+    p{
+      color: #121212;
+      font-size: 14px;
+    }
+    img{
+      width: 90px;
+      height: 50px;
+      margin-right: 11px;
+      object-fit: cover;
+    }
+  }
+}
+.api_news_content{
+  padding-right: 20px;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+.api_newsList_item{
+  position: relative;
+  height: 34px;
+  line-height: 34px;
+  border-bottom: 1px solid #ebebeb;
+  font-size: 13px;
+}
+.api_news_more{
+  position: absolute;
+  top: 12px;
+  right: 0;
+  width: 10px;
+  height: 10px;
+  background: url("../image/more.png") no-repeat;
+  background-size: cover;
+}
+.api_line{
+  background: #ecf0f1;
+  height: 2px;
+}
+.api_h2{
+  text-align: center;color: #9b9b9b;font-weight: normal;
+  margin-top: 13px;
+  font-size: 16px;
+}
+.api_office{
+  border-bottom: 1px solid #ebebeb;
+  &:last-child{
+    padding-bottom: 30px;
+  }
+}
+.api_row{
+  width: 100%;
+  padding: 0 20px;
+  display: flex;
+  display: -webkit-flex;
+  -webkit-justify-content: space-between;
+  justify-content: space-between;
+  flex-wrap: nowrap;
+  -webkit-flex-wrap: nowrap;
+}
+.api_col{
+  font-size: 12px;
+  display: inline-block;
+  height: 42px;
+  line-height: 42px;
+  text-align: center; color: #009fe8;
+  border:1px solid #009fe8;
+  border-radius: 10px;
+  width: 24%;
+}
+#api_grid img{
+  width: 45px;
+  height: 45px;
+  position: relative;
+  margin: auto;
+  margin-bottom: 10px;
+}
+.api_page span{
+  color: #fff !important;
+}
+.api_page_text{
+  position: absolute;
+  width: 100%;
+  bottom: 6px;
+  left: 0;
+  z-index: 1000;
+}
+.api_banner_info{
+  font-size: 14px;
+  width: 75%;
+  height: 24px;
+  padding-left: 5px;
+  line-height: 24px;
+  color: #fff;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+// header
+.header-login{
+  width: 100%;
+  height: 50px !important;
+  background-color: #009fe8;
+  text-align: center;
+  position: relative;
+}
+.backBtn{
+  position: absolute;
+  height: 30px;
+  left: 0;
+  margin-top: 10px;
+  margin-left: 15px;
+  z-index: 1000;
+}
+.api_text{
+  height: 50px;
+  line-height: 50px;
+  margin: 0;
+  font-size: 18px;
+  color: #fff;
+  width: 70%;
+  margin: auto;
+}
+// 通讯录
+.api_title_text{
+  height: 45px;
+  line-height: 45px;
+  width: 100%;
+  box-sizing: border-box;
+  color: #afb6c3;font-size: 13px;background: #f3f6fa;
+  padding-left: 15px;
+}
+.api_mail_items{
+  width: 100%;
+  box-sizing: border-box;
+  padding: 18px 24px 0 24px;
+  display: flex;
+  display: -webkit-flex;
+  -webkit-justify-content: space-between;
+  justify-content: space-between;
+  flex-wrap: wrap;
+  .api_mail_item{
+    box-sizing: border-box;
+    border: 1px solid @border;
+    width: 145px;
+    padding: 15px 3px 10px 18px;
+    border-radius: 5px;
+    margin-bottom: 25px;
+    position: relative;
+    .api_mail_logo{
+      width: 50px;
+      height: 50px;
+      margin-bottom: 6px;
+      border-radius: 50%;
+    }
+    .api_more01{
+      position: absolute;
+      top: 3px;
+      right: 3px;
+      width: 22px;
+      height: 30px;
+    }
+    p{
+      margin-bottom: 15px;
+      font-size: 12px;
+      span{
+        font-size: 12px;
+        color: #97a3b4;
+      }
+    }
+    .api_mail_details{
+      font-size: 12px;
+      color: @bjheader;
+
+    }
+  }
+}
+// 个人中心
+.api_personal_header{
+  background: @bjheader;
+  width: 100%;
+  text-align: center;
+  padding: 20px 0;
+  border-top: 1px solid #37b0e9;
+  .api_header_img{
+    width: 100px;
+    height: 100px;
+    border-radius: 50%;
+    margin: auto;
+    background: url("") no-repeat;
+    background-size: cover;
+  }
+  p{
+    margin-bottom: 13px;
+    color: #fff;
+    font-size: 18px;
+  }
+  .api_personal_name{
+    font-weight: bold;
+    font-size: 20px;
+  }
+  .api_dep{
+    font-size: 14px;
+  }
+  .api_personal_more{
+    height: 31px;
+    line-height: 31px;
+    background: #ecf0f1;
+    color: #2c3e50;
+    font-size: 12px;
+    border-radius: 25px;
+  }
+}
+.api_phoneBind{
+  width: 100%;
+  height: 38px;
+  line-height: 38px;
+  box-sizing: border-box;
+  position: relative;
+  color: #7f8c8d;
+  padding-left: 37px;
+  font-size: 12px;
+  img{
+    width: 17px;
+    height: 17px;
+    position: absolute;
+    top: 10px;
+    left:15px;
+  }
+}
+.api_function{
+  .ico{
+    height: 35px;
+    display: inline-block;
+  }
+  .api_icon1{
+    background: url("../image/news.png") no-repeat;
+    background-size:cover;
+    width: 39px;
+  }
+  .api_icon2{
+    background: url("../image/collection.png") no-repeat;
+    background-size:cover;
+    width: 35px;
+    height: 35px;
+  }
+  .api_icon3{
+    background: url("../image/explain.png") no-repeat;
+    background-size:cover;
+    width: 30px;
+  }
+}
+.api_function_items{
+  .api_function_item{
+    height: 40px;
+    line-height: 40px;
+    padding-left: 41px;
+    color: #000;
+    font-size: 15px;
+    position: relative;
+    border-bottom: 1px solid @border;
+  }
+  img{
+    position: absolute;
+    top: 21px;
+    width: 18px;
+    height: 18px;
+  }
+  .api_pass_img{
+    left: 15px;
+  }
+  .api_more_img{
+    right: 20px;
+  }
+}
+// 修改密码
+.api_forget_phone{
+  padding: 15px 20px;
+  .api_phone{
+    width: 100%;
+    height: 49px;
+    margin-bottom: 14px;
+    box-sizing: border-box;
+    display: flex;
+    display: -webkit-flex;
+    -webkit-justify-content: space-between;
+    justify-content: space-between;
+    flex-wrap: nowrap;;
+  }
+  input::-webkit-input-placeholder{
+    font-size: 14px;position: relative;
+  }
+  input{
+    background-color: #fff;
+    -webkit-tap-highlight-color: rgba(255, 0, 0, 0);
+    outline:none;
+    box-shadow:none;
+    border-radius: 0;
+    padding-left: 22px;
+    border: none;
+    width: 100%;
+    height: 100%;
+    box-sizing: border-box;
+    font-size: 14px;
+  }
+  .api_vali{
+    width: 180px;
+  }
+  .api_btn_vali{
+    display: inline-block;
+    width: 107px;
+    line-height: 49px;
+    text-align: center;
+    background: @bjheader;
+    border: none;
+    font-size: 14px;
+    color: #fff;
+  }
+  .api_bnt{
+    width: 100%;
+    height: 49px;
+    line-height: 49px;
+    background: @bjheader;
+    color: #fff;
+    text-align: center;
+    font-size: 14px;
+  }
+}
+// 个人资料
+// nav
+.api_nav{
+  width: 100%;
+  height: 49px;
+  // position: absolute;
+  // top: 50px;
+  // left: 0;
+  background: #fff;
+  box-sizing: border-box;
+  display: block;
+}
+.header-nav {
+  box-sizing: border-box;
+}
+.header-nav-items {
+  list-style: none;
+  padding: 0;
+  margin: 0;
+  height: 100%;
+  width: 100%;
+  transition: all 1s;
+  // border: 1px solid @border;
+  box-sizing: border-box;
+  // display: flex;
+  // justify-content: center;
+  // flex-wrap: nowrap;
+  // display: -webkit-flex;
+  // -webkit-justify-content: center;
+  // -webkit-flex-wrap: nowrap;
+  overflow: hidden;
+  position: relative;
+}
+.header-nav-items :after{
+  content: "";
+  position: absolute;
+  bottom: 0;
+  left: 0;
+  width: 100%;
+  height: 1px;
+  background: @border;
+}
+.header-nav-items li {
+  position: relative;
+  font-size: 17px;
+  line-height: 49px;
+  padding: 0 16px;
+  white-space: nowrap;
+  text-align: center;
+}
+.header-nav-items .active::after {
+  position: absolute;
+  content: "";
+  display: block;
+  bottom: 0;
+  left: 0;
+  width: 100%;
+  height: 2.5px;
+  background: @bjheader;
+}
+// 基本信息
+.header_img{
+  width: 50px;
+  height: 50px;
+  background: url("") no-repeat;
+  background-size:cover;
+  border-radius: 50%;
+}
+.api_lists{
+  background-image: none;
+  span{
+    color: #bdc3c7;
+  }
+  .api_bind_img{
+    width: 17px;
+    height: 17px;
+    background: url("../image/bind.png") no-repeat;
+    background-size:cover;
+    position: absolute;
+    top: 10px;
+    right:15px;
+  }
+}
+.api_bottom{
+  padding: 15px 0;
+  text-align: center;
+  background: #f2f2f2;
+  color: @textColor;
+}
+.api_layout{
+  .aui-list {
+    .aui-list-item{
+      height: 42px;
+      min-height: 42px;
+    }
+    .aui-list-item-inner{
+      height: 42px;
+      line-height: 42px;
+      min-height: 42px;
+      font-size: 14px;
+    }
+    .aui-list-item-title{
+      font-size: 14px;
+    }
+  }
+}
+// 组织&区队
+.api_leader_wrap{
+  padding: 15px;
+  border-bottom: 1px solid @border;
+  .api_title_or{
+    color: @textColor;
+    font-size: 16px;
+  }
+  .api_leader_content{
+    width: 100%;
+    border-radius: 10px;
+    padding: 33px 30px 23px 30px;
+    box-sizing: border-box;
+    border: 1px solid @border;
+    margin-top: 20px;
+    color: #002257;
+    h1{
+      margin-bottom: 30px;
+      font-size: 22px;
+    }
+    p{
+      font-size: 14px;
+      margin-bottom: 18px;
+    }
+    .api_leader_head{
+      width: 50px;
+      height: 50px;
+      border-radius: 50%;
+      object-fit: cover;
+      margin: auto;
+      margin-bottom: 5px;
+    }
+  }
+}
+.api_leader_wrap1{
+  padding: 20px 18px 10px 18px;
+  h1{
+    color: #002257;
+    font-size: 22px;
+    margin-bottom: 20px;
+  }
+  .api_leader_item1{
+    li{
+      margin-bottom: 20px;
+      font-size: 15px;
+      span{
+        overflow: hidden;
+        text-overflow: ellipsis;
+        white-space: nowrap;
+        color: @textColor;
+      }
+      p{
+        color: #002257;
+      }
+    }
+  }
+}
+//消息列表
+.api_news_item{
+  padding: 10px;
+  li{
+    padding: 15px 0 15px 10px;
+    display: flex;
+    justify-content: flex-start;
+    flex-wrap: nowrap;
+    display: -webkit-flex;
+    -webkit-justify-content: flex-start;
+    -webkit-flex-wrap: nowrap;
+    align-items: center;
+    -webkit-align-items: center;
+    position: relative;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    box-shadow: 0 2px 4px 0 #a6a6a6;
+    border-radius: 5px;
+    margin-bottom: 10px;
+    .api_date{
+      position: absolute;
+      bottom: 15px;
+      right: 20px;
+      font-size: 11px;
+      color: #bdc3c7;
+    }
+    .api_news_num{
+      position: absolute;
+      color: #fff;
+      background-color: #ff0037;
+      width: 20px;
+      height: 20px;
+      line-height: 2.2;
+      text-align: center;
+      border-radius: 50%;
+      font-size: 10px;
+      top: 15px;
+      right: 20px;
+      overflow: hidden;
+      text-overflow: ellipsis;
+      white-space: nowrap;
+    }
+    .api_ceil{
+      width: 10px;
+      height: 100%;
+      background-color: #009fe8;
+      position: absolute;
+      top: 0;
+      right: 0;
+      border-top-right-radius: 5px;
+      border-bottom-right-radius: 5px;
+    }
+  }
+  li:last-child{
+    margin-bottom: 0;
+  }
+  .api_titles{
+    width: 60%;
+    padding-left: 10px;
+    .api_news_title{
+      font-size: 15px;
+      margin-bottom: 8px;
+      font-weight: bold;
+    }
+    p{
+      font-size: 14px;
+      color: #bdc3c7;
+      overflow: hidden;
+      text-overflow: ellipsis;
+      white-space: nowrap;
+    }
+    .api_ico{
+      display: inline-block;
+      width: 15px;
+      height: 15px;
+      background: url("../image/icons.png") no-repeat;
+      background-size: cover;
+      position: relative;
+      top: 2px;
+    }
+  }
+  .news_img{
+    width: 45px;
+    height: 45px;
+    background: url("../image/news_img.png") no-repeat;
+    background-size: cover;
+  }
+}
+@media screen and (max-width: 320px){
+  .api_mail_items .api_mail_item{
+    width: 130px;
+  }
+  .api_forget_phone .api_vali{
+    width: 160px;
+  }
+  .api_forget_phone .api_btn_vali{
+    width: 100px;
+  }
+  .api_news_item{
+    .api_titles{
+      width: 50%;
+    }
+  }
+}
+@media screen and (min-width: 414px){
+  .api_mail_items .api_mail_item{
+    width: 170px;
+  }
+}
+@media screen and (min-width: 411px){
+  .api_mail_items .api_mail_item{
+    width: 170px;
+  }
+}
+@media (min-width: 380px) and (max-width:400px){
+  .api_mail_items .api_mail_item{
+    width: 160px;
+  }
+}
+// aui搜索框
+/*搜索条*/
+.aui-searchbar {
+    display: -webkit-box;
+    -webkit-box-pack: center;
+    -webkit-box-align: center;
+    height: 2.2rem;
+    overflow: hidden;
+    width: 100%;
+    background-color: #ebeced;
+    color: #9e9e9e;
+    -webkit-backface-visibility: hidden;
+  			backface-visibility: hidden;
+}
+.aui-searchbar.focus {
+    -webkit-box-pack: start;
+}
+.aui-searchbar-input {
+    margin: 0 0.5rem;
+	  background-color: rgba(255,255,255,.3);
+    border-radius: 50px;
+    height: 31px;
+    line-height: 31px;
+    font-size: 0.7rem;
+    position: relative;
+    padding-left: 10px;
+    display: -webkit-box;
+    -webkit-box-flex: 1;
+}
+.aui-searchbar form {
+	width: 95%;
+}
+.aui-searchbar-input input {
+    color: #666666;
+    width: 87%;
+    padding: 0;
+    margin: 0;
+    height: 31px;
+    line-height: 32px;
+    border: 0;
+    -webkit-appearance: none;
+    font-size: 0.7rem;
+    margin-left: 33px;
+    color: #fff;
+}
+.aui-searchbar input::-webkit-input-placeholder {
+	color: #ccc;
+}
+.aui-searchbar .aui-iconfont {
+    line-height: 1.4rem;
+    margin-right: 0.25rem;
+    color: #9e9e9e !important;
+}
+.aui-searchbar .aui-searchbar-btn {
+	font-size: 0.7rem;
+	color: #666666;
+	margin-right: -2.2rem;
+	width: 2.2rem;
+	height: 1.4rem;
+	padding-right: 0;
+	line-height: 1.4rem;
+	text-align: center;
+	-webkit-transition: all .3s;
+	      	transition: all .3s;
+}
+.aui-searchbar-clear-btn {
+	position: absolute;
+	right: 5px;
+	top: 3px;
+	width: 1.1rem;
+	height: 1.1rem;
+	background: #eeeeee;
+	border-radius: 50%;
+	line-height: 0.6rem;
+	text-align: center;
+	display: none;
+}
+.aui-searchbar-clear-btn .aui-iconfont {
+	font-size: 0.6rem;
+	margin: 0 auto;
+	position: relative;
+	top: -2px;
+}
+.aui-searchbar .aui-searchbar-btn .aui-iconfont {
+	color: #666666;
+}
+.aui-icon-search:before { content: "\e6e6"; }
+.aui-iconfont {
+  position: relative;
+  font-family:"aui_iconfont" !important;
+  font-size: 0.7rem;
+  font-style:normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+//值班
+.duty{
+  padding: 6px 22px 0 22px;
+  .duty_title{
+    font-size: 18px;
+    color: #fff;
+    padding-left: 34px;
+    position: relative;
+    margin-bottom: 6px;
+
+  }
+  .duty_icon{
+    background: url("../image/gonggao.png") no-repeat;
+    display: block;
+    width: 22px;
+    height: 22px;
+    background-size: cover;
+    position: absolute;
+    left: 0;
+    top: 1px;
+  }
+  .duty_content{
+    font-size: 14px;
+    color: #fff;
+  }
+}
+.item{
+  margin-bottom:20px;
+}
+// 公共
+.flex-space{
+    display: -webkit-flex;
+    display: flex;
+    justify-content: space-between;
+    -webkit-justify-content: space-between;
+    flex-wrap: nowrap;
+    -webkit-flex-wrap: nowrap;
+    align-items: center;
+}
+.flex-start{
+    display: -webkit-flex;
+    display: flex;
+    justify-content: flex-start;
+    -webkit-justify-content: flex-start;
+    flex-wrap: nowrap;
+    -webkit-flex-wrap: nowrap;
+    align-items: center;
+}
+.after-border:after{
+    content: '';
+    display: block;
+    position: absolute;
+    left: 0;  bottom:0;
+    background: #ebeef3;
+    right:0;
+    height: 1px;
+}
+.relative{
+    position: relative;
+}
+// 无内容
+.noText{
+    width: 91px;
+    height: 134px;
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    margin: auto;
+}
+.noText img{
+    width: 100%;
+}
+// tips提示
+#tips{
+  position: absolute;
+  top: 0;
+  left: 0;
+  background:#fff;
+  width: 100%;
+  height: 100%;
+}
+#tips p{
+  width: 200px;
+  height: 150px;
+  line-height: 30px;
+  text-align: center;
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right:0;
+  margin: auto;
+  color: #ccc;
+}
+#tips i{
+  width: 100px;
+  height: 100px;
+  display: block;
+  background:url("../image/error.png") no-repeat;
+  background-size:contain;
+  margin: auto;
+}

File diff suppressed because it is too large
+ 1030 - 0
widget/css/select.css


+ 537 - 0
widget/css/style.css

@@ -0,0 +1,537 @@
+html,body {  font-size:14px; height:100%;  }
+.hover{ opacity: .8; }
+.flex-wrap{ display: -webkit-box;	display: -webkit-flex;	display: flex; }
+.flex-con{     -webkit-box-flex: 1;     -webkit-flex: 1;    flex: 1;}
+.flex-vertical{ -webkit-box-orient: vertical;-webkit-flex-flow: column;flex-flow: column;}
+
+.border-t,
+.border-b{ position:relative;  }
+.border-t:before,
+.border-b:after{     content: '';     position: absolute;     left: 0;  top:0;     background: #ddd;   right:0;    height: 0;     -webkit-transform: scaleY(0.5);             transform: scaleY(0.5);     -webkit-transform-origin: 0 0;             transform-origin: 0 0; }
+.border-b:after{ top:auto; bottom:0;  }
+
+#footer:after{     content: '';     position: absolute;     left: 0;  top:0;     background: #ddd;   right:0;    height: 1px;     -webkit-transform: scaleY(0.5);             transform: scaleY(0.5);     -webkit-transform-origin: 0 0;             transform-origin: 0 0; }
+#wrap{ height: 100%; }
+.normal{
+    color: #2c3e50;
+}
+.alarm{
+    color: #e74c3c;
+}
+.sign{
+    color: #27ae60;
+}
+.fault{
+    color: #2873ff;
+}
+.close{
+    color: #2873ff;
+}
+.open{
+
+  color: #27ae60;
+}
+.normalBg{
+    background: #2c3e50;
+}
+.alarmBg{
+    background: #e74c3c;
+}
+.signBg{
+    background: #27ae60;
+}
+.faultBg{
+    background: #2873ff;
+}
+.closeBg{
+    background: #2873ff;
+}
+.openBg{
+background: #27ae60;
+}
+.NoContent{
+    color: #c0c6ca;
+}
+.Nonews{
+    width: 91px;
+    height: 129px;
+    background: url("../image/NOnews.png") no-repeat;
+    background-size: contain;
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    margin: auto;
+    display: none;
+}
+
+/*生产数据图表css*/
+.navs_item{
+    padding: 0 15px;
+}
+.navs_item li{
+    text-align: center;
+    position: relative;
+}
+.navs_item li span{
+    font-size: 14px;
+    color: #3d3c42;
+}
+.icon_p{
+    width: 68px;
+    height: 48px;
+    background: #fff;
+    -webkit-border-radius: 50%;
+    -moz-border-radius: 50%;
+    border-radius: 50%;
+    position: relative;
+}
+
+.navs_item li:first-child:after{
+    content: "";
+    display: table;
+    width: 1px;
+    height: 100%;
+    position: absolute;
+    top: 0;right: 0;
+    background: #ecf0f1;
+
+}
+.navs_item li:nth-child(2) .icon{
+    background: url('../icon/r.png') no-repeat;
+    background-size: cover;
+}
+.navs_item li:nth-child(3) .icon{
+    background: url('../icon/a.png') no-repeat;
+    background-size: cover;
+}
+.navs_item li:nth-child(4) .icon{
+    background: url('../icon/a1.png') no-repeat;
+    background-size: cover;
+}
+.navs_item li:last-child:after{
+    content: "";
+    display: table;
+    width: 1px;
+    height: 100%;
+    position: absolute;
+    top: 0;left: 0;
+    background: #ecf0f1;
+
+}
+.navs_item .scsj .icon{
+    width: 40px;
+    height: 40px;
+    background: url('../icon/x.png') no-repeat;
+    background-size: cover;
+    position: absolute;
+    top: 0;
+    bottom: 5px;
+    left: 0;
+    right: 0;
+    margin: auto;
+}
+.navs_item li.sbjk .icon{
+    width: 40px;
+    height: 40px;
+    background: url('../icon/sbjk.png') no-repeat;
+    background-size: cover;
+    position: absolute;
+    top: 0;
+    bottom: 5px;
+    left: 0;
+    right: 0;
+    margin: auto;
+}
+.navs_item li .icon{
+    width: 40px;
+    height: 40px;
+    background: url('../icon/s.png') no-repeat;
+    background-size: cover;
+    position: absolute;
+    top: 0;
+    bottom: 5px;
+    left: 0;
+    right: 0;
+    margin: auto;
+}
+.borderRa{
+    -webkit-border-radius: 10px;
+    -moz-border-radius: 10px;
+    border-radius: 10px;
+}
+.Stitle{
+    font-size: 17px;
+    color: #3d3c42;
+}
+.centertT{
+    text-align: center;
+}
+.Scontent{
+    text-indent:30px ;
+    padding: 8px 0 5px 0;
+}
+.Notice{
+    padding: 15px;
+    background: #fff;
+    -webkit-box-sizing: border-box;
+    -moz-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 100%;
+    margin-bottom: 13px;
+    position: relative;
+    padding-top: 13px;
+    box-shadow:0 3px 29px 0 rgba(59,74,116,0.14);
+}
+.Notice1{
+    padding: 15px;
+    background: #fff;
+    -webkit-box-sizing: border-box;
+    -moz-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 100%;
+    margin-bottom: 13px;
+    position: relative;
+}
+.beforS:after{
+  content: "";
+  position: absolute;
+  top: 50px;
+  left: 0;
+  width: 100%;
+  height: 1px;
+  background: #F3F3F3;
+}
+.afterS:after{
+  content: "";
+  position: absolute;
+  bottom: 45px;
+  left: 0;
+  width: 100%;
+  height: 1px;
+  background: #F3F3F3;
+}
+.canvasTitle{
+  font-size: 14px;
+  color: #3d3c42;
+}
+.seachDetatle{
+  color: #3d3c42;
+  margin-top: 10px;
+}
+.circular{
+  width: 60px;
+  height: 60px;
+  border-radius: 50%;
+  line-height: 60px;
+  text-align: center;
+  color: #fff;
+  font-size: 15px;
+}
+.police li span{
+    margin-top:0;
+    margin-bottom: 9px;
+}
+.police li:nth-child(1) .circular{
+  background: #E74C3C;
+}
+.police li:nth-child(2) .circular{
+  background: #E67E22;
+}
+.police li:nth-child(3) .circular{
+  background: #3498DB;
+}
+.police .navs_item{
+  margin: 0;
+  margin-top: 20px;
+}
+.items{
+  margin-top: 15px;
+  padding: 0 23px;
+}
+.items .item i{
+  width: 40px;
+  height: 40px;
+  display: block;
+  background-position: center;
+  margin-top: 10px;
+}
+.items .item span{
+  margin: 10px 0;
+  font-size: 14px;
+  color:#232627;
+}
+.num{
+  font-size: 14px;
+  color:#232627;
+}
+.items .item:nth-child(1) i{
+  background: url('../icon/p.png') no-repeat;
+  background-size: cover;
+}
+.items .item:nth-child(2) i{
+    background: url('../icon/d.png') no-repeat;
+    background-size: cover;
+}
+.items .item:nth-child(3) i{
+    background: url('../icon/g.png') no-repeat;
+    background-size: cover;
+}
+.selectYield{
+    outline: none;
+    border: 1px solid #F3F3F3;
+    padding: 5px;
+    width: 100px;
+    height: 32px;
+    line-height: 30px;
+    border-radius: 3px;
+    margin-top: 10px;
+    background: #fff;
+}
+#button-value{
+    width: 120px;
+    padding: 6px 0;
+    -webkit-border-radius: 3px;
+    -moz-border-radius: 3px;
+    border-radius: 3px;
+    border: 1px solid #F3F3F3;
+    padding-left: 10px;
+    color: #3d3c42;
+    font-size: 14px;
+    -webkit-box-sizing: border-box;
+    -moz-box-sizing: border-box;
+    box-sizing: border-box;
+    -webkit-appearance:none;
+}
+.button-value{
+  width: 90px;
+  padding: 6px 0;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+  border: 1px solid #F3F3F3;
+  text-align: center;
+  color: #3d3c42;
+  font-size: 14px;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+  outline: none;
+  -webkit-appearance:none;
+}
+.selectTime,.selectTime1{
+    margin-left: 10px;
+}
+.Sharebox{
+    display: inline-block;
+}
+.lower{
+    width: 10px;
+    height: 10px;
+    position: absolute;
+    top: 10px;
+    right: 10px;
+    background: url("../icon/lower.png") no-repeat;
+    background-size: cover;
+    background-position: center;
+}
+.padding0{
+  padding: 0 15px;
+}
+/*弹性盒子*/
+.flex-space{
+    display: -webkit-flex;
+    display: flex;
+    justify-content: space-between;
+    -webkit-justify-content: space-between;
+    flex-wrap: nowrap;
+    -webkit-flex-wrap: nowrap;
+    align-items: center;
+}
+.flex-start{
+    display: -webkit-flex;
+    display: flex;
+    justify-content: flex-start;
+    -webkit-justify-content: flex-start;
+    flex-wrap: nowrap;
+    -webkit-flex-wrap: nowrap;
+    align-items: center;
+}
+.flex-center{
+    display: -webkit-flex;
+    display: flex;
+    justify-content: center;
+    -webkit-justify-content: center;
+    flex-wrap: nowrap;
+    -webkit-flex-wrap: nowrap;
+    align-items: center;
+}
+/*// 无内容*/
+.noText{
+    width: 91px;
+    height: 134px;
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    margin: auto;
+}
+.noText img{
+    width: 100%;
+}
+/*****审批人列表***/
+.api_layout_box{
+    background-color: rgba(0,0,0, .4);
+    position: fixed; margin: auto;
+    left: 0; right: 0; top: 0; bottom: 0;
+    width: 100%;
+    height: 100%;
+    opacity: 1;
+    padding: 0 20px;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    overflow: hidden;
+}
+.box_m{
+    width: 325px; height: 444px;
+    background: #fff;
+    border-radius: 5px;
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    margin: auto;
+    padding-top: 120px;
+    overflow: hidden;
+}
+.api_box{
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 100%;
+    background: #fff;
+    z-index: 100;
+    padding: 0 20px;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    border-radius: 5px;
+}
+.api_box h3{
+    font-size: initial;
+}
+.selectTitle{
+    padding: 15px 0;
+}
+.api_layout_box .font-s{
+    font-size: 14px;
+}
+.api_layout_box .input-s{
+    height: 40px;
+    border: 1px solid #97a3b4;
+    -webkit-border-radius: 5px;
+    -moz-border-radius: 5px;
+    border-radius: 5px;
+    padding-left: 10px;
+}
+.api_layout_box .column{
+    height: 319px;
+    overflow-y: scroll;;
+    -webkit-overflow-scrolling: touch;
+}
+.column-select{
+    background-color: transparent;
+    box-shadow: none;
+    display: block;
+    padding: 0;
+    margin: 0;
+    width: 100%;
+    line-height: normal;
+    color: #424242;
+    font-family: inherit;
+    box-sizing: border-box;
+    -webkit-user-select: text;
+    user-select: text;
+    -webkit-appearance: none;
+    appearance: none;
+}
+.aui-list-item-input{
+    margin-top: 10px;
+    position: relative;
+}
+.aui-list-item-input:after{
+    content:"";
+    border-left:5px solid transparent;
+    border-right:5px solid transparent;
+    border-bottom:5px solid #b3c0ce;
+    -webkit-transform-origin:5px 2.5px;
+    transform-origin:5px 2.5px;
+    -webkit-transition: all .5s ease;
+    transition: all .5s ease;
+    position:absolute;
+    right:10px;
+    top:18px;
+    -webkit-transform:rotate(180deg);
+    transform:rotate(180deg);
+}
+.api_leader_head{
+    height: 50px;
+    width: 50px;
+    display: block;
+    -webkit-border-radius: 50%;
+    border-radius: 50%;
+    margin-right: 10px;
+}
+.api_layout_box .column li{
+    padding: 10px;
+}
+/*cheackbox*/
+.remember-password-container {
+    width: 56px;
+    height: 24px;
+    text-align: center;
+}
+.remember-password-container .remember-password-content {
+    position: relative;
+}
+
+.remember-password-container input[type=checkbox]{
+    width: 20px;
+    height: 20px;
+    position: absolute;
+    opacity: 0;
+    cursor: pointer;
+    z-index: 2;
+    font-size: initial;
+}
+
+.remember-me-label {
+    cursor: pointer;
+}
+.remember-password-container span {
+    position: absolute;
+    width: 20px;
+    height: 20px;
+    top: 2px;
+    background: url(../image/cheackbox2.png);
+    background-size: 20px;
+    background-repeat: no-repeat;
+}
+
+.remember-password-container input[type=checkbox]:checked+span {
+    background: url(../image/cheackbox1.png);
+    background-size: 20px;
+    background-repeat: no-repeat;
+}
+.api_box .api-icon-close{
+    position: absolute;
+    top: 13px;
+    right: -5px;
+    font-size: 24px;
+    font-weight: bold;
+}
+select{
+    outline: none;
+}

File diff suppressed because it is too large
+ 15 - 0
widget/css/swiper.css


+ 167 - 0
widget/css/toast.css

@@ -0,0 +1,167 @@
+/*toast*/
+.api-toast{
+	width: 100%;
+	height: 100%;
+	position: fixed;
+	top: 0;
+	left: 0;
+	background: rgba(255,255,255,1);
+}
+.aui-toast {
+	background: rgba(0, 0, 0, 0.7);
+	text-align: center;
+	border-radius: 0.25rem;
+	color: #ffffff;
+	position: fixed;
+	z-index: 3;
+	top: 45%;
+	left: 50%;
+	width: 7.5em;
+	padding: 0.5rem;
+	margin-left: -3.75em;
+	margin-top: -4rem;
+	display: none;
+}
+.aui-toast .aui-iconfont {
+	display: block;
+	font-size: 2.6rem;
+}
+.aui-toast-content {
+	font-size: 14px;
+  /*margin: 0 0 0.75rem;*/
+}
+.aui-toast-loading {
+    background-color: #ffffff;
+    border-radius: 100%;
+    margin: 0.75rem 0;
+    -webkit-animation-fill-mode: both;
+        	animation-fill-mode: both;
+    border: 2px solid #ffffff;
+    border-bottom-color: transparent;
+    height: 3.25rem;
+    width: 3.25rem;
+    background: transparent !important;
+    display: inline-block;
+    -webkit-animation: rotate 1s 0s linear infinite;
+        	animation: rotate 1s 0s linear infinite;
+}
+/*基础动画类*/
+@keyframes rotate {
+    0% {
+        -webkit-transform: rotate(0deg) scale(1);
+            	transform: rotate(0deg) scale(1);
+    }
+    50% {
+        -webkit-transform: rotate(180deg) scale(1);
+            	transform: rotate(180deg) scale(1);
+    }
+    100% {
+        -webkit-transform: rotate(360deg) scale(1);
+            	transform: rotate(360deg) scale(1);
+    }
+}
+@-webkit-keyframes rotate {
+    0% {
+        -webkit-transform: rotate(0deg) scale(1);
+            	transform: rotate(0deg) scale(1);
+    }
+    50% {
+        -webkit-transform: rotate(180deg) scale(1);
+            	transform: rotate(180deg) scale(1);
+    }
+    100% {
+        -webkit-transform: rotate(360deg) scale(1);
+            	transform: rotate(360deg) scale(1);
+    }
+}
+@keyframes bounce {
+	0%, 100% {
+	-webkit-transform: scale(0.0);
+			transform: scale(0.0);
+	}
+	50% {
+	-webkit-transform: scale(1.0);
+			transform: scale(1.0);
+	}
+}
+@-webkit-keyframes bounce {
+	0%, 100% {
+		-webkit-transform: scale(0.0);
+				transform: scale(0.0);
+	}
+	50% {
+		-webkit-transform: scale(1.0);
+				transform: scale(1.0);
+	}
+}
+@keyframes fadeIn {
+    from { opacity: 0.3; }
+    to { opacity: 1; }
+}
+@-webkit-keyframes fadeIn {
+    from { opacity: 0.3; }
+    to { opacity: 1; }
+}
+@font-face {
+	font-family: "aui_iconfont";
+	src: url('aui-iconfont.ttf') format('truetype');
+}
+.aui-iconfont {
+	position: relative;
+	font-family:"aui_iconfont" !important;
+	font-size: 0.7rem;
+	font-style:normal;
+	-webkit-font-smoothing: antialiased;
+	-moz-osx-font-smoothing: grayscale;
+}
+.aui-icon-menu:before { content: "\e6eb"; }
+.aui-icon-paper:before { content: "\e6ec"; }
+.aui-icon-info:before { content: "\e6ed"; }
+.aui-icon-question:before { content: "\e6ee"; }
+.aui-icon-left:before { content: "\e6f4"; }
+.aui-icon-right:before { content: "\e6f5"; }
+.aui-icon-top:before { content: "\e6f6"; }
+.aui-icon-down:before { content: "\e6f7"; }
+.aui-icon-share:before { content: "\e700"; }
+.aui-icon-comment:before { content: "\e701"; }
+.aui-icon-edit:before { content: "\e6d3"; }
+.aui-icon-trash:before { content: "\e6d4"; }
+.aui-icon-recovery:before { content: "\e6dc"; }
+.aui-icon-refresh:before { content: "\e6dd"; }
+.aui-icon-close:before { content: "\e6d8"; }
+.aui-icon-cart:before { content: "\e6df"; }
+.aui-icon-star:before { content: "\e6e0"; }
+.aui-icon-plus:before { content: "\e6e3"; }
+.aui-icon-minus:before { content: "\e62d"; }
+.aui-icon-correct:before { content: "\e6e5"; }
+.aui-icon-search:before { content: "\e6e6"; }
+.aui-icon-gear:before { content: "\e6e8"; }
+.aui-icon-map:before { content: "\e6d2"; }
+.aui-icon-location:before { content: "\e6d1"; }
+.aui-icon-image:before { content: "\e6ce"; }
+.aui-icon-phone:before { content: "\e6c4"; }
+.aui-icon-camera:before { content: "\e6cd"; }
+.aui-icon-video:before { content: "\e6cc"; }
+.aui-icon-qq:before { content: "\e6cb"; }
+.aui-icon-wechat:before { content: "\e6c9"; }
+.aui-icon-weibo:before { content: "\e6c8"; }
+.aui-icon-note:before { content: "\e6c6"; }
+.aui-icon-mail:before { content: "\e6c5"; }
+.aui-icon-wechat-circle:before { content: "\e6ca"; }
+.aui-icon-home:before { content: "\e706"; }
+.aui-icon-forward:before { content: "\e6d9"; }
+.aui-icon-back:before { content: "\e6da"; }
+.aui-icon-laud:before { content: "\e64b"; }
+.aui-icon-lock:before { content: "\e6ef"; }
+.aui-icon-unlock:before { content: "\e62f"; }
+.aui-icon-like:before { content: "\e62b"; }
+.aui-icon-my:before { content: "\e610"; }
+.aui-icon-more:before { content: "\e625"; }
+.aui-icon-mobile:before { content: "\e697"; }
+.aui-icon-calendar:before { content: "\e68a"; }
+.aui-icon-date:before { content: "\e68c"; }
+.aui-icon-display:before { content: "\e612"; }
+.aui-icon-hide:before { content: "\e624"; }
+.aui-icon-pencil:before { content: "\e615"; }
+.aui-icon-flag:before { content: "\e6f1"; }
+.aui-icon-cert:before { content: "\e704"; }

File diff suppressed because it is too large
+ 824 - 0
widget/html/704/704.html


+ 98 - 0
widget/html/704/securtyFrm.html

@@ -0,0 +1,98 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css">
+    <link rel="stylesheet" type="text/css" href="../../css/style.css"/>
+    <link rel="stylesheet" href="../../css/aui.css">
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style>
+        body{
+            background: #fff;
+        }
+        .nav_title{
+            padding: 0 5px;
+            background: #f3f6fa;
+        }
+        .nav_title li{
+            text-align: center;
+            font-size: 14px;
+            padding: 12px 0 ;
+        }
+        .row_content{
+            padding: 0 5px;
+        }
+        .row_content li{
+            text-align: center;
+            font-size: 13px;
+            padding: 12px 0;
+            align-items: center;
+        }
+    </style>
+</head>
+<body>
+<div class="api_layout">
+    <div class="row_contents">
+        <ul class="row_content" id="row_content">
+
+        </ul>
+    </div>
+</div>
+<div class="noText hide" id="nocode">
+  <img src="../../image/noText.png" alt="">
+</div>
+<script type="text/template" id="templateStatu">
+    {{~it:value}}
+      <li class="flex-wrap after-border relative {{=value.status}}">
+          <span class="flex-con">{{=value.id}}</span>
+          <span class="flex-con">{{=value.position}}</span>
+          <span class="flex-con">{{=value.value}}{{=value.unit}}</span>
+      </li>
+    {{~}}
+</script>
+<script src="../../script/api.js"></script>
+<!-- <script src="../../script/fastclick.min.js"></script> -->
+<!-- <script src="../../script/aui-toast.js" charset="utf-8"></script> -->
+<script src="../../script/doT.min.js"></script>
+<script src="../../script/config.js"></script>
+<script>
+    var toast = new auiToast();
+    apiready = function () {
+        monitorStatusFun(api.pageParam.type);
+  }
+  // 全部数据详情
+  function monitorStatusFun(type) {
+    var data = {
+      status:type,
+    }
+    toast.loading({
+        title: "加载中",
+        duration: 2000
+    });
+    $http.fnReuestDataNologing(UrlRouter.getSafetyStatusList,'','post',data,function(ret,err){
+      toast.hide();
+      if (ret.data.length == 0) {
+          document.getElementById("nocode").style.display = 'block';
+          return false;
+      }else {
+          document.getElementById("nocode").style.display = 'none';
+      }
+      if (ret && ret.code == 0) {
+        if (ret.data.length > 0) {
+          $apis.html(row_content,'#templateStatu',ret.data);
+        }
+      }else {
+        api.toast({
+            msg: '网络请求超时,请稍后重试',
+            duration: 2000,
+            location: 'bottom'
+        });
+      }
+    })
+  }
+</script>
+</body>
+</html>

+ 92 - 0
widget/html/704/securtyWin.html

@@ -0,0 +1,92 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css">
+    <link rel="stylesheet" type="text/css" href="../../css/style.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style>
+        body{
+            background: #fff;
+        }
+        .nav_title{
+            padding: 0 5px;
+            background: #f3f6fa;
+        }
+        .nav_title li{
+            text-align: center;
+            font-size: 14px;
+            padding: 12px 0 ;
+        }
+        .row_content{
+            padding: 0 5px;
+        }
+        .row_content li{
+            text-align: center;
+            font-size: 13px;
+            padding: 12px 0;
+            align-items: center;
+        }
+    </style>
+</head>
+<body>
+<div class="api_layout">
+    <header class="header-login">
+       <img class="backBtn" src="../../image/btn_back.png" alt="" onclick="backIndex()">
+       <p class="api_text"></p>
+    </header>
+    <nav>
+        <ul class="nav_title flex-wrap">
+            <li class="flex-con">序号</li>
+            <li class="flex-con">安装地点</li>
+            <li class="flex-con">数值/状态</li>
+        </ul>
+    </nav>
+</div>
+<script src="../../script/api.js"></script>
+<!-- <script src="../../script/fastclick.min.js"></script> -->
+<script src="../../script/doT.min.js"></script>
+<script src="../../script/config.js"></script>
+<script>
+    apiready = function () {
+      $api.fixStatusBar($api.dom('header') );
+      $api.html($api.dom('.api_text'), api.pageParam.title);
+      openFrame(api.pageParam.title,api.pageParam.type);
+    };
+    function openFrame(name,type) {
+      api.openFrame({
+          name: 'securtyFrm',
+          url: 'securtyFrm.html',
+          rect: {
+              x: 0,
+              y: $api.dom('.api_layout').offsetHeight ,
+              w: 'auto',
+              h: 'auto'
+          },
+          pageParam: {
+              title:name,
+              type:type
+          },
+          bounces: true,
+          bgColor: '#fff',
+          vScrollBarEnabled: true,
+          hScrollBarEnabled: true
+      });
+    }
+    function backIndex() {
+        api.closeWin();
+    }
+    // 监听物理返回键
+    function keybackFun() {
+      api.addEventListener({
+          name: 'keyback'
+        }, function(ret, err){
+          api.closeWin();
+      });
+    }
+</script>
+</body>
+</html>

File diff suppressed because it is too large
+ 1007 - 0
widget/html/704Jinfeng/704.html


+ 108 - 0
widget/html/704Jinfeng/securtyFrm.html

@@ -0,0 +1,108 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="UTF-8" />
+    <meta
+      name="viewport"
+      content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"
+    />
+    <meta
+      name="format-detection"
+      content="telephone=no,email=no,date=no,address=no"
+    />
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css" />
+    <link rel="stylesheet" type="text/css" href="../../css/style.css" />
+    <link rel="stylesheet" href="../../css/aui.css" />
+    <link rel="stylesheet" href="../../css/projeck.css" />
+    <style>
+      body {
+        background: #fff;
+      }
+      .nav_title {
+        padding: 0 5px;
+        background: #f3f6fa;
+      }
+      .nav_title li {
+        text-align: center;
+        font-size: 14px;
+        padding: 12px 0;
+      }
+      .row_content {
+        padding: 0 5px;
+      }
+      .row_content li {
+        text-align: center;
+        font-size: 13px;
+        padding: 12px 0;
+        align-items: center;
+      }
+    </style>
+  </head>
+  <body>
+    <div class="api_layout">
+      <div class="row_contents">
+        <ul class="row_content" id="row_content"></ul>
+      </div>
+    </div>
+    <div class="noText hide" id="nocode">
+      <img src="../../image/noText.png" alt="" />
+    </div>
+    <script type="text/template" id="templateStatu">
+      {{~it:value}}
+        <li class="flex-wrap after-border relative {{=value.status}}">
+            <span class="flex-con">{{=value.id}}</span>
+            <span class="flex-con">{{=value.position}}</span>
+            <span class="flex-con">{{=value.value}}{{=value.unit}}</span>
+        </li>
+      {{~}}
+    </script>
+    <script src="../../script/api.js"></script>
+    <!-- <script src="../../script/fastclick.min.js"></script> -->
+    <!-- <script src="../../script/aui-toast.js" charset="utf-8"></script> -->
+    <script src="../../script/doT.min.js"></script>
+    <script src="../../script/config.js"></script>
+    <script>
+      var toast = new auiToast();
+      apiready = function () {
+        monitorStatusFun(api.pageParam.type);
+      };
+      // 全部数据详情
+      function monitorStatusFun(type) {
+        var data = {
+          status: type,
+        };
+        toast.loading({
+          title: '加载中',
+          duration: 2000,
+        });
+        $http.fnReuestDataNologing(
+          jinfengUrlRouter.getSafetyStatusList,
+          '',
+          'post',
+          data,
+          function (ret, err) {
+            toast.hide();
+            if (ret.data.length == 0) {
+              document.getElementById('nocode').style.display = 'block';
+              return false;
+            } else {
+              document.getElementById('nocode').style.display = 'none';
+            }
+            if (ret && ret.code == 0) {
+              if (ret.data.length > 0) {
+                $apis.html(row_content, '#templateStatu', ret.data);
+              }
+            } else {
+              api.toast({
+                msg: '网络请求超时,请稍后重试',
+                duration: 2000,
+                location: 'bottom',
+              });
+            }
+          }
+        );
+      }
+    </script>
+  </body>
+</html>

+ 92 - 0
widget/html/704Jinfeng/securtyWin.html

@@ -0,0 +1,92 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css">
+    <link rel="stylesheet" type="text/css" href="../../css/style.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style>
+        body{
+            background: #fff;
+        }
+        .nav_title{
+            padding: 0 5px;
+            background: #f3f6fa;
+        }
+        .nav_title li{
+            text-align: center;
+            font-size: 14px;
+            padding: 12px 0 ;
+        }
+        .row_content{
+            padding: 0 5px;
+        }
+        .row_content li{
+            text-align: center;
+            font-size: 13px;
+            padding: 12px 0;
+            align-items: center;
+        }
+    </style>
+</head>
+<body>
+<div class="api_layout">
+    <header class="header-login">
+       <img class="backBtn" src="../../image/btn_back.png" alt="" onclick="backIndex()">
+       <p class="api_text"></p>
+    </header>
+    <nav>
+        <ul class="nav_title flex-wrap">
+            <li class="flex-con">序号</li>
+            <li class="flex-con">安装地点</li>
+            <li class="flex-con">数值/状态</li>
+        </ul>
+    </nav>
+</div>
+<script src="../../script/api.js"></script>
+<!-- <script src="../../script/fastclick.min.js"></script> -->
+<script src="../../script/doT.min.js"></script>
+<script src="../../script/config.js"></script>
+<script>
+    apiready = function () {
+      $api.fixStatusBar($api.dom('header') );
+      $api.html($api.dom('.api_text'), api.pageParam.title);
+      openFrame(api.pageParam.title,api.pageParam.type);
+    };
+    function openFrame(name,type) {
+      api.openFrame({
+          name: 'securtyFrm',
+          url: 'securtyFrm.html',
+          rect: {
+              x: 0,
+              y: $api.dom('.api_layout').offsetHeight ,
+              w: 'auto',
+              h: 'auto'
+          },
+          pageParam: {
+              title:name,
+              type:type
+          },
+          bounces: true,
+          bgColor: '#fff',
+          vScrollBarEnabled: true,
+          hScrollBarEnabled: true
+      });
+    }
+    function backIndex() {
+        api.closeWin();
+    }
+    // 监听物理返回键
+    function keybackFun() {
+      api.addEventListener({
+          name: 'keyback'
+        }, function(ret, err){
+          api.closeWin();
+      });
+    }
+</script>
+</body>
+</html>

File diff suppressed because it is too large
+ 824 - 0
widget/html/704Zaoquan/704.html


+ 108 - 0
widget/html/704Zaoquan/securtyFrm.html

@@ -0,0 +1,108 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="UTF-8" />
+    <meta
+      name="viewport"
+      content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"
+    />
+    <meta
+      name="format-detection"
+      content="telephone=no,email=no,date=no,address=no"
+    />
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css" />
+    <link rel="stylesheet" type="text/css" href="../../css/style.css" />
+    <link rel="stylesheet" href="../../css/aui.css" />
+    <link rel="stylesheet" href="../../css/projeck.css" />
+    <style>
+      body {
+        background: #fff;
+      }
+      .nav_title {
+        padding: 0 5px;
+        background: #f3f6fa;
+      }
+      .nav_title li {
+        text-align: center;
+        font-size: 14px;
+        padding: 12px 0;
+      }
+      .row_content {
+        padding: 0 5px;
+      }
+      .row_content li {
+        text-align: center;
+        font-size: 13px;
+        padding: 12px 0;
+        align-items: center;
+      }
+    </style>
+  </head>
+  <body>
+    <div class="api_layout">
+      <div class="row_contents">
+        <ul class="row_content" id="row_content"></ul>
+      </div>
+    </div>
+    <div class="noText hide" id="nocode">
+      <img src="../../image/noText.png" alt="" />
+    </div>
+    <script type="text/template" id="templateStatu">
+      {{~it:value}}
+        <li class="flex-wrap after-border relative {{=value.status}}">
+            <span class="flex-con">{{=value.id}}</span>
+            <span class="flex-con">{{=value.position}}</span>
+            <span class="flex-con">{{=value.value}}{{=value.unit}}</span>
+        </li>
+      {{~}}
+    </script>
+    <script src="../../script/api.js"></script>
+    <!-- <script src="../../script/fastclick.min.js"></script> -->
+    <!-- <script src="../../script/aui-toast.js" charset="utf-8"></script> -->
+    <script src="../../script/doT.min.js"></script>
+    <script src="../../script/config.js"></script>
+    <script>
+      var toast = new auiToast();
+      apiready = function () {
+        monitorStatusFun(api.pageParam.type);
+      };
+      // 全部数据详情
+      function monitorStatusFun(type) {
+        var data = {
+          status: type,
+        };
+        toast.loading({
+          title: '加载中',
+          duration: 2000,
+        });
+        $http.fnReuestDataNologing(
+          zaoquanUrlRouter.getSafetyStatusList,
+          '',
+          'post',
+          data,
+          function (ret, err) {
+            toast.hide();
+            if (ret.data.length == 0) {
+              document.getElementById('nocode').style.display = 'block';
+              return false;
+            } else {
+              document.getElementById('nocode').style.display = 'none';
+            }
+            if (ret && ret.code == 0) {
+              if (ret.data.length > 0) {
+                $apis.html(row_content, '#templateStatu', ret.data);
+              }
+            } else {
+              api.toast({
+                msg: '网络请求超时,请稍后重试',
+                duration: 2000,
+                location: 'bottom',
+              });
+            }
+          }
+        );
+      }
+    </script>
+  </body>
+</html>

+ 92 - 0
widget/html/704Zaoquan/securtyWin.html

@@ -0,0 +1,92 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css">
+    <link rel="stylesheet" type="text/css" href="../../css/style.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style>
+        body{
+            background: #fff;
+        }
+        .nav_title{
+            padding: 0 5px;
+            background: #f3f6fa;
+        }
+        .nav_title li{
+            text-align: center;
+            font-size: 14px;
+            padding: 12px 0 ;
+        }
+        .row_content{
+            padding: 0 5px;
+        }
+        .row_content li{
+            text-align: center;
+            font-size: 13px;
+            padding: 12px 0;
+            align-items: center;
+        }
+    </style>
+</head>
+<body>
+<div class="api_layout">
+    <header class="header-login">
+       <img class="backBtn" src="../../image/btn_back.png" alt="" onclick="backIndex()">
+       <p class="api_text"></p>
+    </header>
+    <nav>
+        <ul class="nav_title flex-wrap">
+            <li class="flex-con">序号</li>
+            <li class="flex-con">安装地点</li>
+            <li class="flex-con">数值/状态</li>
+        </ul>
+    </nav>
+</div>
+<script src="../../script/api.js"></script>
+<!-- <script src="../../script/fastclick.min.js"></script> -->
+<script src="../../script/doT.min.js"></script>
+<script src="../../script/config.js"></script>
+<script>
+    apiready = function () {
+      $api.fixStatusBar($api.dom('header') );
+      $api.html($api.dom('.api_text'), api.pageParam.title);
+      openFrame(api.pageParam.title,api.pageParam.type);
+    };
+    function openFrame(name,type) {
+      api.openFrame({
+          name: 'securtyFrm',
+          url: 'securtyFrm.html',
+          rect: {
+              x: 0,
+              y: $api.dom('.api_layout').offsetHeight ,
+              w: 'auto',
+              h: 'auto'
+          },
+          pageParam: {
+              title:name,
+              type:type
+          },
+          bounces: true,
+          bgColor: '#fff',
+          vScrollBarEnabled: true,
+          hScrollBarEnabled: true
+      });
+    }
+    function backIndex() {
+        api.closeWin();
+    }
+    // 监听物理返回键
+    function keybackFun() {
+      api.addEventListener({
+          name: 'keyback'
+        }, function(ret, err){
+          api.closeWin();
+      });
+    }
+</script>
+</body>
+</html>

+ 225 - 0
widget/html/Qrcode/11.html

@@ -0,0 +1,225 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" href="../../css/apiToast.css">
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style>
+    html,body{
+       background: #fff;
+       }
+       .api_layout{
+            width: 100%;
+            position: relative;
+        }
+        .List_QRcode{
+            width: 100%;
+            padding: 10px;
+            -webkit-box-sizing: border-box;
+            -moz-box-sizing: border-box;
+            box-sizing: border-box;
+        }
+        .List_QRcode li{
+            -webkit-box-sizing: border-box;
+            box-sizing: border-box;
+            position: relative;
+            margin-bottom: 25px;
+            border-bottom: 1px solid #ecf0f1;
+        }
+        .List_QRcode li:first-child{
+            padding: 20px 10px 15px 20px;
+            -webkit-box-sizing: border-box;
+            box-sizing: border-box;
+            border-bottom: 0;
+            background-color: #009fe8;
+            -webkit-border-radius: 3px;
+            -moz-border-radius: 3px;
+            border-radius: 3px;
+        }
+        .List_QRcode li:first-child .time{
+            font-size: 18px;
+            color: #fff;
+            margin-bottom: 30px;
+            position: relative;
+        }
+        .btn{
+            width: 80px;
+            height: 32px;
+            line-height: 32px;
+            font-size: 12px;
+            background: #fff;
+            color: #41c1fc;
+            -webkit-border-radius: 50px;
+            -moz-border-radius: 50px;
+            border-radius: 50px;
+        }
+        .texts{
+            font-size: 16px;
+            color: #fff;
+            line-height: 18px;
+            width: 65%;
+            line-height: 1.5;
+        }
+        .start1{
+            position: absolute;
+            top: -10px;
+            right: 127px;
+            background: url("../../image/Star2.png") no-repeat;
+            background-size: cover;
+            width: 14px;
+            height: 14px;
+        }
+        .bg_start{
+            display: inline-block;
+            width: 20px;
+            height: 20px;
+            background: url("../../image/star.png");
+            background-size: cover;
+            position: relative;
+            top: 4px;
+        }
+        .bord{
+           border: 1px solid #41c1fc;
+        }
+        .List_QRcode li:not(:first-child){
+            padding: 0 10px 10px 13px;
+        }
+        .List_QRcode li:not(:first-child) .btn{
+            position: absolute;
+            top: 15px;
+            right: 10px;
+        }
+        .List_QRcode li:not(:first-child) .list_title{
+            font-size: 16px;
+            color: #97a3b4;
+            height: 23px;
+            line-height: 23px;
+            margin-bottom: 18px;
+        }
+        .List_QRcode li:not(:first-child) .texts01{
+            color: #1d1e2c;
+        }
+        .List_QRcode li:not(:first-child) .list_title .start1{
+            width:0;
+        }
+        .List_QRcode li:first-child .time .bg_start{
+            display:inline;
+        }
+        .List_QRcode li:first-child .bord{
+            display:none;
+        }
+        .List_QRcode li:not(:first-child) .bords{
+            display: none;
+        }
+    </style>
+</head>
+<body>
+<div class="api_layout">
+    <div class="List_QRcodes">
+        <ul class="List_QRcode" id="List_QRcode">
+
+        </ul>
+    </div>
+</div>
+<div class="Nonews" id="nocode"></div>
+</body>
+</html>
+<script type="text/template" id="template">
+  {{~it:value}}
+  <li>
+      <p class="time list_title">
+            <i class="bg_start"></i>
+            <span>{{=value.createDate}}</span>
+            <i class="start1"></i>
+      </p>
+      <p class="texts texts01">{{=value.dataContent}}</p>
+      <div style="text-align: right">
+          <button class="btn bords" style="background:#009fe8;color: #ffffff;border: 1px solid #ffffff;" onclick="QRcodeDetaile('{{=value.pageId}},{{=value.id}},{{=value.departmentId}}','{{=value.pageName}}')">查看详情</button>
+          <button class="btn bord" onclick="QRcodeDetaile('{{=value.pageId}},{{=value.id}},{{=value.departmentId}}','{{=value.pageName}}')">查看详情</button>
+      </div>
+  </li>
+  {{~}}
+  </script>
+
+<script type="text/javascript" src="../../script/api.js"></script>
+<script type="text/javascript" src="../../script/doT.min.js"></script>
+<!-- <script src="../../script/aui-toast.js" charset="utf-8"></script> -->
+<!-- <script src="../../script/fastclick.min.js"></script> -->
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+    var depIDs = '',uuid='';
+    var isLoadding = false;
+		var skip = 1;
+    var apiToast = new apiToast();
+    apiready = function () {
+        depIDs = api.pageParam.depIDs;
+        var info = $api.getStorage('data'),
+        user = JSON.parse(info).data.user;
+        uuid = JSON.parse(info).data.user.staff_num;
+        QRcodeListFun(uuid,depIDs,true);
+        resetWidth();
+        api.addEventListener({
+  				name : 'scrolltobottom',
+  				extra : {
+  					threshold : 0 //设置距离底部多少距离时触发,默认值为0,数字类型
+  				}
+  			}, function(ret, err) {
+  				if (!isLoadding) {
+  					isLoadding = true;
+  					QRcodeListFun(uuid,depIDs,true);
+  				}
+  			});
+    }
+    function QRcodeListFun(uuid,depID,isLoadMore){
+      var filter = {
+				"departmentId" : depID,
+        'userId':uuid,
+				"pageNumber" : skip,
+				"pageSize" : 10
+			};
+     $http.fnReuestDataNoW(UrlRouter.getPageDynamicApi,'','get',filter,function (ret, err) {
+         apiToast.hide();
+        if (ret.data.length == 0 && skip == 1) {
+            document.getElementById("nocode").style.display = 'block';
+            return false;
+        }else {
+            document.getElementById("nocode").style.display = 'none';
+        }
+         if (ret) {
+             if (ret.data.length > 0) {
+                 skip += 1;
+                 $apis.append(List_QRcode,'#template',ret.data);
+             } else {
+                 isLoadding = true;
+                 api.toast({
+                     msg: '没有更多数据',
+                     duration: 2000,
+                     location: 'bottom'
+                 });
+             }
+         } else {
+             apiToast.hide();
+             api.toast({
+                 msg: '加载超时,请检查网络',
+                 duration: 2000,
+                 location: 'bottom'
+             });
+         }
+     });
+    }
+    function resetWidth() {
+        var items = document.getElementsByClassName("texts");
+        for (var i = 0; i < items.length; i++) {
+            items[i].style.width = (api.frameWidth - 130) + "px";
+        }
+    }
+    function QRcodeDetaile(pageid,title) {
+      var pageidA = pageid.split(',');
+      $event.openWin('browseQrcode_win','../browseQrcode/browseQrcode_win',{pageId:pageidA[0],id:pageidA[1],departmentId:pageidA[2],title:title},'');
+      // $event.openWin('QrcodeDetaile','QrcodeDetaile',{pageId:pageidA[0],id:pageidA[1],departmentId:pageidA[2],flag:true},'');
+    }
+</script>

+ 599 - 0
widget/html/Qrcode/QRcode0.html

@@ -0,0 +1,599 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" href="../../css/apiToast.css">
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style>
+       html,body{
+           background: #fff;
+       }
+       .api_layout{
+            width: 100%;
+            position: relative;
+        }
+        .List_QRcode{
+            width: 100%;
+            -webkit-box-sizing: border-box;
+            -moz-box-sizing: border-box;
+            box-sizing: border-box;
+        }
+        .List_QRcode li{
+            -webkit-box-sizing: border-box;
+            box-sizing: border-box;
+            position: relative;
+            border-bottom: 1px solid #ecf0f1;
+        }
+        .btn{
+            width: 80px;
+            height: 32px;
+            line-height: 32px;
+            font-size: 12px;
+            background: #fff;
+            color: #41c1fc;
+            -webkit-border-radius: 50px;
+            -moz-border-radius: 50px;
+            border-radius: 50px;
+        }
+        .texts{
+            font-size: 16px;
+            color: #fff;
+            line-height: 18px;
+            width: 100%;
+            line-height: 1.5;
+        }
+        .bg_start{
+            display: inline-block;
+            width: 20px;
+            height: 20px;
+            background: url("../../image/star.png");
+            background-size: cover;
+            position: relative;
+            top: 4px;
+        }
+        .bord{
+           border: 1px solid #41c1fc;
+        }
+        .List_QRcode li {
+            padding:10px 0;
+        }
+        .List_QRcode li .btn{
+            position: absolute;
+            top: 15px;
+            right: 10px;
+        }
+        .List_QRcode li .list_title{
+            font-size: 16px;
+            color: #97a3b4;
+            height: 23px;
+            line-height: 23px;
+            margin-bottom: 10px;
+        }
+        .List_QRcode li .texts01{
+            color: #1d1e2c;
+        }
+        .List_QRcode li .list_title .start1{
+            width:0;
+        }
+      /*巡检记录列表样式*/
+      .record_list li{
+          padding: 12px 15px;
+          position: relative;
+      }
+      .record_list li:after{
+          content: '';
+          width: 100%;
+          display: block;
+          position: absolute;
+          bottom: 0;
+          left: 0;
+          height: 1px;
+          background: #e6e7e8;
+      }
+      .record_header{
+          width: 52px;
+          height: 52px;
+          -webkit-border-radius: 50%;
+          -moz-border-radius: 50%;
+          border-radius: 50%;
+          margin-right: 7px;
+          border: 1px solid #ECF0F1;
+      }
+      .personal_info{
+          display: flex;
+          justify-content: flex-start;
+          flex-wrap: nowrap;
+          display: -webkit-flex;
+          -webkit-justify-content: flex-start;
+          -webkit-flex-wrap: nowrap;
+          align-items: center;
+          position: relative;
+      }
+      .personal_info span{
+          display: block;
+          font-size: 15px;
+          color: #000;
+      }
+      .personal_info span:first-child{
+        font-weight: bold;
+      }
+      .personal_info span:last-child{
+          color: #69707f;
+      }
+      .more_recode{
+          width: 32px;
+          height: 23px;
+          -webkit-box-sizing: border-box;
+          -moz-box-sizing: border-box;
+          box-sizing: border-box;
+          display: block;
+          background: url("../../image/moreRecord.png") no-repeat;
+          background-size: cover;
+          position: absolute;
+          top: 0;
+          right: 8px;
+      }
+      .text_content{
+          margin-top: 15px;
+          color: #000;
+          font-size: 15px;
+      }
+      .rows{
+          display: flex;
+          /*justify-content: space-around;*/
+          flex-wrap: wrap;
+          align-items: flex-start;
+          margin-top: 10px;
+      }
+      .column{
+          /*width: 100%;*/
+          margin-bottom: 10px;
+      }
+      .column img{
+          width: 100%;
+          height: 100%;
+          object-fit: cover;
+          -webkit-border-radius: 10px;
+          -moz-border-radius: 10px;
+          border-radius: 10px;
+          margin: auto;
+          border: 1px solid #f2f2f2;
+      }
+      .date_record{
+          color: #999;
+          font-size: 15px;
+      }
+      .Unread{
+          width: 40px;
+          height: 32px;
+          display: block;
+          position: absolute;
+          top: 0;
+          right: 0;
+          background: url("../../image/unread.png") no-repeat;
+          background-size: cover;
+      }
+      .nread{
+          width: 40px;
+          height: 32px;
+          display: block;
+          position: absolute;
+          top: 0;
+          right: 0;
+          background: url("../../image/nread.png") no-repeat;
+          background-size: cover;
+      }
+      .footers{
+          display: flex;
+          display: -webkit-flex;
+          justify-content: space-between;
+          -webkit-justify-content: space-between;
+          white-space: nowrap;
+          align-items: center;
+          -webkit-align-items: center;
+          padding: 10px 0;
+      }
+      .thumbs{
+          width: 15px;
+          height: 15px;
+          background: url("../../icon/momentHeart.png") no-repeat;
+          -webkit-background-size: contain;
+          background-size: contain;
+          background-position: center;
+      }
+      .comment{
+          width: 15px;
+          height: 15px;
+          background: url("../../icon/momentComment.png") no-repeat;
+          -webkit-background-size: contain;
+          background-size: contain;
+          background-position: center;
+      }
+      .thumbsAndcomment{
+          display: flex;
+          display: -webkit-flex;
+          justify-content:flex-start;
+          -webkit-justify-content: flex-start;
+          white-space: nowrap;
+          align-items: center;
+          -webkit-align-items: center;
+      }
+      .thumbsAndcomment span{
+          position: relative;
+          top: 0;
+          margin-left: 5px;
+          color: #3a4553;
+          font-size: 12px;
+      }
+      .thumbs_num{
+          background: #f3f3f3;
+          padding: 5px 0;
+          display: none;
+          padding-right: 5px;
+          position: relative;
+      }
+      .thumbs_num:after{
+          content: '';
+          display: block;
+          position: absolute;
+          bottom: 0;
+          left: 0;
+          height: 1px;
+          width: 100%;
+          background: rgba(226,226,228,.4);
+      }
+      .thumbs_num p{
+          color: #6d6f96;
+          font-size: 13px;
+      }
+      .thumbs-s{
+          margin-right: 50px;
+      }
+      .taox{
+          width: 15px;
+          height: 15px;
+          background: url("../../icon/taox.png") no-repeat;
+          -webkit-background-size: contain;
+          background-size: contain;
+          background-position: center;
+          margin: 0 5px;
+      }
+      .comment_content p{
+          background: #f3f3f3;
+      }
+      .comment_c{
+          font-size: 13px;
+          padding: 5px;
+      }
+      .title{
+          color: #6d6f96;
+      }
+    </style>
+</head>
+<body>
+<div class="api_layout">
+    <div class="List_QRcodes">
+        <ul class="List_QRcode" id="List_QRcode"></ul>
+    </div>
+</div>
+<div class="noText hide">
+  <img src="../../image/noText.png" alt="">
+</div>
+</body>
+</html>
+<script type="text/template" id="template">
+  {{~it:value}}
+  {{?value.msgType == 'CODE'}}
+      <li style="padding:15px;" onclick="QRcodeDetaile('{{=value.pageId}},{{=value.id}},{{=value.departmentId}}','{{=value.pageName}}')">
+          <p class="time list_title">
+             <i class="bg_start"></i>
+             <span>{{=value.createDate}}</span>
+          </p>
+          <p class="texts texts01">{{=value.dataContent}}</p>
+      </li>
+  {{??}}
+      <li style="padding:10px 15px;">
+        <div onclick="RecordDetaile('{{=value.recordId}}')">
+          <div class="personal_info">
+              <img src="{{=urlphp}}storage/avatar/avatar_{{=value.createId}}.png" onerror=javascript:this.src="http://jiewei-icon.oss-cn-beijing.aliyuncs.com/icon/default-avatar.png" class="record_header">
+              <p>
+                  <span>{{=value.createName}}</span>
+                  <span>{{=value.uesrOrganizationName}}</span>
+              </p>
+          </div>
+          <p class="text_content">{{=value.dataContent}}</p>
+          <div class="row{{=value.id}} rows">
+              {{if (value.dataImages != "") { }}
+                  {{ for (var j=0;j<value.dataImages.length;j++) { }}
+                  {{if(j<=8) { }}
+                    <div class="column">
+                        <img src="{{=value.dataImages[j]}}" alt="">
+                    </div>
+                    {{ } }}
+                  {{ } }}
+              {{ } }}
+          </div>
+          <i class=" {{=value.readFlag == true?'nread' : 'Unread'}}"></i>
+        </div>
+        <div class="footers">
+            <span class="date_record">{{=value.createDate}}</span>
+            <div class="thumbsAndcomment">
+                <div class="flex-start thumbs-s" id="thumbsid{{=value.id}}"  onclick="dianzan(this,'{{=value.id}}')" flat="{{=value.staffflag}}">
+                    <i class="thumbs" style="background:url({{=value.staffflag==true?'../../icon/momentHeart_like.png':'../../icon/momentHeart.png'}}) no-repeat;background-size: contain;background-position: center;"></i>
+                    <span class="zan">赞</span>
+                </div>
+                <div class="flex-start" onclick="comment(this,'{{=value.id}}')">
+                    <i class="comment"></i>
+                    <span>评论</span>
+                </div>
+            </div>
+        </div>
+        <div class="thumbs_num" style="display:{{=value.staffLIkes.length == 0?'none':'block'}}">
+          <div class="flex-start">
+              <i class="taox"></i>
+              <p class="names">
+                {{? value.staffLIkes.length > 0}}
+                  {{ for(var d = 0;d<value.staffLIkes.length;d++) { }}
+                       {{? d === 0}}
+                       <span class="{{=value.staffLIkes[d].staffNum == uuid?'true':''}}">{{=value.staffLIkes[d].name}}</span>
+                       {{??}}
+                          <span class="{{=value.staffLIkes[d].staffNum == uuid?'true':''}}">,{{=value.staffLIkes[d].name}}</span>
+                      {{?}}
+                  {{ } }}
+                {{?}}
+              </p>
+          </div>
+        </div>
+        <div class="comment_content">
+        {{? value.staffCommentVos.length > 0}}
+            {{ for(var s = 0;s<value.staffCommentVos.length;s++) { }}
+                <p class="comment_c"  onclick=deleteComment(this,'{{=value.staffCommentVos[s].id}}','{{=value.staffCommentVos[s].staffNum}}')>
+                    <span class="title">{{=value.staffCommentVos[s].name}}:</span>
+                    {{=value.staffCommentVos[s].content}}
+                </p>
+            {{ } }}
+          {{?}}
+      </div>
+      </li>
+  {{?}}
+  {{~}}
+  </script>
+
+<script type="text/javascript" src="../../script/api.js"></script>
+<script type="text/javascript" src="../../script/doT.min.js"></script>
+<script src="../../script/zepto.js" charset="utf-8"></script>
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+    var depIDs = '',uuid='';
+    var isLoadding = false;
+		var skip = 1,name = "";
+    apiready = function () {
+        depIDs = api.pageParam.depID;
+        var info = $api.getStorage('data'),
+        user = JSON.parse(info).data.user;
+        uuid = JSON.parse(info).data.user.staff_num;
+        name = JSON.parse(info).data.user.name;
+        QRcodeListFun(uuid,depIDs,true);
+        resetWidth();
+        api.addEventListener({
+  				name : 'scrolltobottom',
+  				extra : {
+  					threshold : 0 //设置距离底部多少距离时触发,默认值为0,数字类型
+  				}
+  			}, function(ret, err) {
+  				if (!isLoadding) {
+  					isLoadding = true;
+  					QRcodeListFun(uuid,depIDs,true);
+  				}
+  			})
+    }
+    function QRcodeListFun(uuid,depID,isLoadMore){
+      var filter = {
+				"departmentId" :depID,
+        'userId':uuid,
+				"pageNumber" : skip,
+				"pageSize" : 10
+			};
+     $http.requestShowProgress(UrlRouter.getPageAndRecordDynamic,'get',filter)
+     .then(ret=>{
+       if (ret.data.length == 0 && skip == 1) {
+         $api.removeCls($api.dom('.noText'), 'hide');
+           return false;
+       }else {
+         $api.addCls($api.dom('.noText'), 'hide');
+       }
+       if (ret.data.length > 0) {
+           skip += 1;
+           $apis.append(List_QRcode,'#template',ret.data);
+           for (var i = 0; i < ret.data.length; i++) {
+             flexImage(ret.data[i].id)
+           }
+       } else {
+           isLoadding = true;
+           api.toast({
+               msg: '没有更多数据',
+               duration: 2000,
+               location: 'bottom'
+           });
+       }
+     })
+     .catch(err=>{
+       api.toast({
+           msg: '加载超时,请检查网络',
+           duration: 2000,
+           location: 'bottom'
+       });
+     })
+    }
+    function resetWidth() {
+        var items = document.getElementsByClassName("texts");
+        for (var i = 0; i < items.length; i++) {
+            items[i].style.width = (api.frameWidth - 130) + "px";
+        }
+    }
+    function QRcodeDetaile(pageid,title) {
+      var pageidA = pageid.split(',');
+      $event.openWin('browseQrcode_win','../browseQrcode/browseQrcode_win',{pageId:pageidA[0],id:pageidA[1],departmentId:pageidA[2],title:title},'');
+      // $event.openWin('QrcodeDetaile','QrcodeDetaile',{pageId:pageidA[0],id:pageidA[1],departmentId:pageidA[2],flag:true},'');
+    }
+    // 巡检记录
+    // 记录详情
+    function RecordDetaile(recordId) {
+      $event.openTabLayout('recodeDetails','../browseQrcode/recodeDetails','记录详情',{recordParentId:recordId});
+    }
+    function flexImage(j) {
+        var length = document.querySelectorAll('.row'+j+' .column').length,
+            column = document.querySelectorAll('.row'+j+' .column');
+            imgs = document.querySelectorAll('.row'+j+' .column img');
+        if (length == 1) {
+            column[0].style.width = api.winWidth-30 + 'px';
+            column[0].style.height = (api.winWidth-30) +'px'
+        }else if (length == 2) {
+            for (var i = 0; i < column.length; i++) {
+                column[i].style.width = (api.winWidth-30) / 2 +'px'
+                column[i].style.height = (api.winWidth-30-20) / 2 +'px'
+                column[i].getElementsByTagName('img')[0].style.width= (api.winWidth-50) / 2 +'px'
+            }
+        }else {
+            for (var i = 0; i < column.length; i++) {
+                column[i].style.width = (api.winWidth-30) / 3 +'px'
+                column[i].style.height = (api.winWidth-30-20) / 3 +'px'
+                column[i].getElementsByTagName('img')[0].style.width=(api.winWidth-50) / 3 +'px'
+            }
+        }
+    };
+    // 点赞
+    function dianzan(el,id,type) {
+        var gray ='../../icon/momentHeart.png',red = '../../icon/momentHeart_like.png';
+        var thumbs_num = $(el).parent().parent().parent().find('.thumbs_num');
+        var str = "";
+        if ($(el).attr('flat') === "false"){
+            $(el).attr('flat','true');
+            $(el).find('.thumbs').css("backgroundImage",'url('+red+')');
+            if (thumbs_num.find('p').html().replace(/\s+/g,"") === ""){
+                thumbsPost(id,type)
+                str =`<span class="true">${name}</span>`;
+                $(thumbs_num).css('display','block');
+                $(thumbs_num.find('p')).append(str)
+            }else {
+                thumbsPost(id,type)
+                $(thumbs_num).css('display','block');
+                str =`<span class="true">,${name}</span>`;
+                $(thumbs_num.find('p')).append(str);
+            }
+
+        } else {
+            thumbsPost(id,type)
+            var thumbs_numTrue =  $(el).parent().parent().parent().find('.thumbs_num').find('p').find('.true');
+            var index = $(el).parent().parent().parent().find('.thumbs_num p>span').length;
+            index === 1?$(thumbs_num).css('display','none'):"";
+            $(el).attr('flat','false');
+            $(el).find('.thumbs').css("backgroundImage",'url('+gray+')');
+            $(thumbs_numTrue).remove();
+        }
+    }
+    // 评论
+    function comment(el,id,type) {
+      var inputField = api.require('inputField');
+      inputField.open({
+        bgColor: '#f5f5f5',
+        lineColor: '#ccc',
+        fileBgColor: '#fff',
+        borderColor: '#ccc',
+        autoFocus:true,
+        placeholder:'评论',
+        sendBtn:{
+           bg: '#86c3f7',          //字符串类型;发送按钮常态背景色
+           inputBg:'#009fe8',      //(可选项)字符串类型;当输入文字发时送按钮的背景色;默认:bg的色值
+           bgHighlight: '#009fe8', //字符串类型;发送按钮点击时的高亮背景色
+           title: '发送',        //字符串类型;发送按钮的标题
+           titleSize: 14,       //数字类型;发送按钮的标题字体大小
+           titleColor: '#fff',  //字符串类型;发送按钮标题文字颜色
+           corner: 5,           //数字类型;发送按钮圆角大小
+           sendW:60,            //数字类型;发送按钮的宽
+           sendH:30,            //数字类型;发送按钮的高
+           marginRight:10,
+        },
+        placeholderStyles:{
+           color: '#ccc',     //字符串类型;占位文字颜色,支持rgb、rgba、#;默认:#696969
+           size: 14,          //数字类型;占位文字大小;默认:13
+           marginL: 10
+        },
+        fixedOn: api.frameName
+      }, function(ret, err) {
+        if (ret) {
+            commentFun(el,id,type,ret.msg)
+            inputField.close();
+        }
+      });
+      addEventWindow();// 监听关闭input
+    }
+    // 监听点击空白处关闭input
+    function addEventWindow() {
+      var inputField = api.require('inputField');
+      inputField.setInputFieldListener(function(ret, err) {
+          if (ret) {
+              if (ret.chatViewH === 0) {
+                var inputField = api.require('inputField');
+                inputField.close();
+              }
+          }
+      });
+    }
+    // 删除评论
+    function deleteComment(el,ids,jobNum) {
+      if (jobNum != uuid) return false;
+      api.actionSheet({
+          cancelTitle: '取消',
+          destructiveTitle: '删除',
+      }, function(ret, err) {
+          if (ret.buttonIndex === 1) {
+              $http.requestData(UrlRouter.delComment,'post',{id:ids})
+              .then(ret=>{
+                if (ret.code === 0) {
+                  $(el).remove();
+                }
+              }).catch(err=>{})
+          }
+      });
+    }
+    // 点赞接口
+    function thumbsPost(ids,types) {
+      var data ={
+        id:ids,
+        type:'record'
+      }
+      $http.requestData(UrlRouter.thumbs,'post',data)
+      .then(ret=>{
+        if (ret.code === 401) {
+            api.alert({
+                title: '提示',
+                msg: '登录过期,重新登录',
+            });
+        }
+      }).catch(err=>{})
+    }
+    // 评论接口
+    function commentFun(el,ids,type,msg) {
+      var data = {
+        id:ids,
+        type:'record',
+        content:msg
+      }
+      $http.requestData(UrlRouter.comment,'post',data)
+      .then(ret=>{
+        if (ret.code === 0) {
+          var comment = $(el).parent().parent().parent().find('.comment_content')
+          var html = `<p class="comment_c" onclick=deleteComment(this,${ret.data.id},${ret.data.staff_num})>
+                        <span class="title">${name}:</span>
+                        ${ret.data.content}
+                      </p>`;
+          $(comment).append(html);
+        }
+      }).catch(err=>{})
+    }
+</script>

+ 574 - 0
widget/html/Qrcode/QRcode1.html

@@ -0,0 +1,574 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" href="../../css/apiToast.css">
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style>
+        html,body{
+            background: #fff;
+        }
+        .api_layout{
+            width: 100%;
+            position: relative;
+        }
+        .record_list li{
+            padding: 12px 15px;
+            position: relative;
+        }
+        .record_list li:after{
+            content: '';
+            width: 100%;
+            display: block;
+            position: absolute;
+            bottom: 0;
+            left: 0;
+            height: 1px;
+            background: #e6e7e8;
+        }
+        .record_header{
+            width: 52px;
+            height: 52px;
+            -webkit-border-radius: 50%;
+            -moz-border-radius: 50%;
+            border-radius: 50%;
+            margin-right: 7px;
+            border: 1px solid #ECF0F1;
+        }
+        .personal_info{
+            display: flex;
+            justify-content: flex-start;
+            flex-wrap: nowrap;
+            display: -webkit-flex;
+            -webkit-justify-content: flex-start;
+            -webkit-flex-wrap: nowrap;
+            align-items: center;
+            position: relative;
+        }
+        .personal_info span{
+            display: block;
+            font-size: 15px;
+            color: #000;
+        }
+        .personal_info span:first-child{
+          font-weight: bold;
+        }
+        .personal_info span:last-child{
+            color: #69707f;
+        }
+        .more_recode{
+            width: 32px;
+            height: 23px;
+            -webkit-box-sizing: border-box;
+            -moz-box-sizing: border-box;
+            box-sizing: border-box;
+            display: block;
+            background: url("../../image/moreRecord.png") no-repeat;
+            background-size: cover;
+            position: absolute;
+            top: 0;
+            right: 8px;
+        }
+        .text_content{
+            margin-top: 15px;
+            color: #000;
+            font-size: 15px;
+        }
+        .rows{
+            display: flex;
+            /*justify-content: space-around;*/
+            flex-wrap: wrap;
+            align-items: flex-start;
+            margin-top: 10px;
+        }
+        .column{
+            /*width: 100%;*/
+            margin-bottom: 10px;
+        }
+        .column img{
+            width: 100%;
+            height: 100%;
+            object-fit: cover;
+            -webkit-border-radius: 10px;
+            -moz-border-radius: 10px;
+            border-radius: 10px;
+            margin: auto;
+            border: 1px solid #f2f2f2;
+        }
+        .date_record{
+            color: #999;
+            font-size: 15px;
+        }
+        .Unread{
+            width: 40px;
+            height: 32px;
+            display: block;
+            position: absolute;
+            top: 0;
+            right: 0;
+            background: url("../../image/unread.png") no-repeat;
+            background-size: cover;
+        }
+        .nread{
+            width: 40px;
+            height: 32px;
+            display: block;
+            position: absolute;
+            top: 0;
+            right: 0;
+            background: url("../../image/nread.png") no-repeat;
+            background-size: cover;
+        }
+        .footers{
+            display: flex;
+            display: -webkit-flex;
+            justify-content: space-between;
+            -webkit-justify-content: space-between;
+            white-space: nowrap;
+            align-items: center;
+            -webkit-align-items: center;
+            padding: 10px 0;
+        }
+        .thumbs{
+            width: 15px;
+            height: 15px;
+            background: url("../../icon/momentHeart.png") no-repeat;
+            -webkit-background-size: contain;
+            background-size: contain;
+            background-position: center;
+        }
+        .comment{
+            width: 15px;
+            height: 15px;
+            background: url("../../icon/momentComment.png") no-repeat;
+            -webkit-background-size: contain;
+            background-size: contain;
+            background-position: center;
+        }
+        .thumbsAndcomment{
+            display: flex;
+            display: -webkit-flex;
+            justify-content:flex-start;
+            -webkit-justify-content: flex-start;
+            white-space: nowrap;
+            align-items: center;
+            -webkit-align-items: center;
+        }
+        .thumbsAndcomment span{
+            position: relative;
+            top: 0;
+            margin-left: 5px;
+            color: #3a4553;
+            font-size: 12px;
+        }
+        /*.thumbs_num img{*/
+           /*width: 30px;*/
+           /*height: 30px;*/
+            /*-webkit-border-radius: 50%;*/
+            /*-moz-border-radius: 50%;*/
+            /*border-radius: 50%;*/
+            /*border: 1px solid #ccc;*/
+        /*}*/
+        .thumbs_num{
+            background: #f3f3f3;
+            padding: 5px 0;
+            display: none;
+            padding-right: 5px;
+            position: relative;
+        }
+        .thumbs_num:after{
+            content: '';
+            display: block;
+            position: absolute;
+            bottom: 0;
+            left: 0;
+            height: 1px;
+            width: 100%;
+            background: rgba(226,226,228,.4);
+        }
+        .thumbs_num p{
+            color: #6d6f96;
+            font-size: 13px;
+        }
+        .thumbs-s{
+            margin-right: 50px;
+        }
+        .taox{
+            width: 15px;
+            height: 15px;
+            background: url("../../icon/taox.png") no-repeat;
+            -webkit-background-size: contain;
+            background-size: contain;
+            background-position: center;
+            margin: 0 5px;
+        }
+        .comment_content p{
+            background: #f3f3f3;
+        }
+        .comment_c{
+            font-size: 13px;
+            padding: 5px;
+        }
+        .title{
+            color: #6d6f96;
+        }
+    </style>
+</head>
+<body>
+<div class="api_layout">
+    <div class="recode_warp">
+        <ul class="record_list" id="record_lists">
+         <!-- <li>
+             <div>
+                 <div class="personal_info">
+                     <img src="" onerror=javascript:this.src="http://jiewei-icon.oss-cn-beijing.aliyuncs.com/icon/default-avatar.png" class="record_header">
+                     <p>
+                         <span>张三</span>
+                         <span>信息监测中心</span>
+                     </p>
+                 </div>
+                 <p class="text_content">今天天气很好,我很开心。。。</p>
+                 <i class=" {{=it[i].readFlag == true?'nread' : 'Unread'}}"></i>
+             </div>
+              <div class="footers">
+                  <span class="date_record">2019-10-29</span>
+                  <div class="thumbsAndcomment">
+                      <div class="flex-start thumbs-s" onclick="dianzan(this)" flat="false">
+                          <i class="thumbs"></i>
+                          <span class="zan">赞</span>
+                      </div>
+                      <div class="flex-start" onclick="comment(this)">
+                          <i class="comment"></i>
+                          <span>评论</span>
+                      </div>
+                  </div>
+              </div>
+              <div class="thumbs_num">
+                  <div class="flex-start">
+                      <i class="taox"></i>
+                      <p class="names"></p>
+                  </div>
+              </div>
+              <div class="comment_content">
+                  <p class="comment_c">
+                    <span class="title">王五:</span>
+                    送骄傲手机哦怕就送手机哦怕手机哦送骄傲手机哦怕就送手机哦怕手机哦
+                  </p>
+              </div>
+          </li> -->
+        </ul>
+    </div>
+</div>
+<div class="Nonews" id="nocode"></div>
+</body>
+</html>
+<script type="text/template" id="templateRecord">
+  {{ for (var i = 0;i<it.length;i++) { }}
+      <li>
+          <div onclick="RecordDetaile('{{=it[i].recordId}}')">
+            <div class="personal_info">
+                <img src="{{=urlphp}}storage/avatar/avatar_{{=it[i].createId}}.png" onerror=javascript:this.src="http://jiewei-icon.oss-cn-beijing.aliyuncs.com/icon/default-avatar.png" class="record_header">
+                <p>
+                    <span>{{=it[i].createName}}</span>
+                    <span>{{=it[i].uesrOrganizationName}}</span>
+                </p>
+            </div>
+            <p class="text_content">{{=it[i].dataContent}}</p>
+            <div class="row{{=it[i].id}} rows">
+                {{if (it[i].dataImages != "") { }}
+                    {{ for (var j=0;j<it[i].dataImages.length;j++) { }}
+                    {{if(j<=8) { }}
+                      <div class="column">
+                          <img src="{{=it[i].dataImages[j]}}" alt="">
+                      </div>
+                      {{ } }}
+                    {{ } }}
+                {{ } }}
+            </div>
+            <i class=" {{=it[i].readFlag == true?'nread' : 'Unread'}}"></i>
+          </div>
+          <div class="footers">
+              <span class="date_record">{{=it[i].createDate}}</span>
+              <div class="thumbsAndcomment">
+                  <div class="flex-start thumbs-s" id="thumbsid{{=it[i].id}}"  onclick="dianzan(this,'{{=it[i].id}}')" flat="{{=it[i].staffflag}}">
+                      <i class="thumbs" style="background:url({{=it[i].staffflag==true?'../../icon/momentHeart_like.png':'../../icon/momentHeart.png'}}) no-repeat;background-size: contain;background-position: center;"></i>
+                      <span class="zan">赞</span>
+                  </div>
+                  <div class="flex-start" onclick="comment(this,'{{=it[i].id}}')">
+                      <i class="comment"></i>
+                      <span>评论</span>
+                  </div>
+              </div>
+          </div>
+          <div class="thumbs_num" style="display:{{=it[i].staffLIkes.length == 0?'none':'block'}}">
+            <div class="flex-start">
+                <i class="taox"></i>
+                <p class="names">
+                  {{? it[i].staffLIkes.length > 0}}
+                    {{ for(var d = 0;d<it[i].staffLIkes.length;d++) { }}
+                         {{? d === 0}}
+                         <span class="{{=it[i].staffLIkes[d].staffNum == uuid?'true':''}}">{{=it[i].staffLIkes[d].name}}</span>
+                         {{??}}
+                            <span class="{{=it[i].staffLIkes[d].staffNum == uuid?'true':''}}">,{{=it[i].staffLIkes[d].name}}</span>
+                        {{?}}
+                    {{ } }}
+                  {{?}}
+                </p>
+            </div>
+          </div>
+          <div class="comment_content">
+            {{? it[i].staffCommentVos.length > 0}}
+                {{ for(var s = 0;s<it[i].staffCommentVos.length;s++) { }}
+                    <p class="comment_c"  onclick=deleteComment(this,'{{=it[i].staffCommentVos[s].id}}','{{=it[i].staffCommentVos[s].staffNum}}')>
+                        <span class="title">{{=it[i].staffCommentVos[s].name}}:</span>
+                        {{=it[i].staffCommentVos[s].content}}
+                    </p>
+                {{ } }}
+              {{?}}
+          </div>
+      </li>
+  {{ } }}
+</script>
+<script type="text/javascript" src="../../script/api.js"></script>
+<script type="text/javascript" src="../../script/doT.min.js"></script>
+ <script src="../../script/zepto.js" charset="utf-8"></script>
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+    // kkk();
+    var isLoadding = false,uuid="";
+    var apiToast = new apiToast();
+    var skip = 1;
+    var depIDs = '';
+    var headers = "",name = "";
+    apiready = function () {
+        $api.fixStatusBar($api.dom('header'));
+        depIDs = api.pageParam.depIDs;
+        var info = $api.getStorage('data'),
+        token = JSON.parse(info).data.access_token,
+        user = JSON.parse(info).data.user;
+        uuid = JSON.parse(info).data.user.staff_num;
+        name = JSON.parse(info).data.user.name;
+        recordItmes(uuid,depIDs,false);
+        // 上拉加载
+        api.addEventListener({
+  				name : 'scrolltobottom',
+  				extra : {
+  					threshold : 0 //设置距离底部多少距离时触发,默认值为0,数字类型
+  				}
+  			}, function(ret, err) {
+  				if (!isLoadding ) {
+  					isLoadding = true;
+  					recordItmes(uuid,depIDs,true);
+  				}
+  			});
+        // header
+        headers = {
+            "Authorization": "Bearer " + token
+        }
+    };
+    // 数据
+    function recordItmes(useruuid,depID,isLoadMore){
+      var filter = {
+        "departmentId" : depID,
+        'userId':useruuid,
+        "pageNumber" : skip,
+        "pageSize" :10
+      };
+      $http.fnReuestDataNoW(UrlRouter.getRecordDynamicApi,'','get',filter,function (ret,err) {
+        isLoadding = false;
+        apiToast.hide();
+        if (ret.data.length == 0 && skip == 1) {
+            document.getElementById("nocode").style.display = 'block';
+            return false;
+        }else {
+            document.getElementById("nocode").style.display = 'none';
+        }
+        if (ret) {
+            if (ret.data.length > 0) {
+              skip += 1;
+              $apis.append(record_lists,'#templateRecord',ret.data);
+                for (var i = 0; i < ret.data.length; i++) {
+                  flexImage(ret.data[i].id)
+                }
+            } else {
+               isLoadding =true;
+                api.toast({
+                    msg: '没有更多数据',
+                    duration: 2000,
+                    location: 'bottom'
+                });
+            }
+        } else {
+            apiToast.hide();
+            api.toast({
+                msg: '加载超时,请检查网络',
+                duration: 2000,
+                location: 'bottom'
+            });
+        }
+      });
+    };
+    // function photoTailoringFun(value,i) {
+    //   var imageBrowser = api.require('imageBrowser');
+    //     imageBrowser.openImages({
+    //         imageUrls: value.split(','),
+    //         activeIndex:i,
+    //         showList:false
+    //     });
+    // }
+    // 记录详情
+    function RecordDetaile(recordId) {
+      $event.openTabLayout('recodeDetails','../browseQrcode/recodeDetails','记录详情',{recordParentId:recordId});
+      // $event.openWin('recordDetaile','recordDetaile',{recordParentId:''},'');
+    }
+    function flexImage(j) {
+        var length = document.querySelectorAll('.row'+j+' .column').length,
+            column = document.querySelectorAll('.row'+j+' .column');
+            imgs = document.querySelectorAll('.row'+j+' .column img');
+        if (length == 1) {
+            column[0].style.width = api.winWidth-30 + 'px';
+            column[0].style.height = (api.winWidth-30) +'px'
+        }else if (length == 2) {
+            for (var i = 0; i < column.length; i++) {
+                column[i].style.width = (api.winWidth-30) / 2 +'px'
+                column[i].style.height = (api.winWidth-30-20) / 2 +'px'
+                column[i].getElementsByTagName('img')[0].style.width= (api.winWidth-50) / 2 +'px'
+            }
+        }else {
+            for (var i = 0; i < column.length; i++) {
+                column[i].style.width = (api.winWidth-30) / 3 +'px'
+                column[i].style.height = (api.winWidth-30-20) / 3 +'px'
+                column[i].getElementsByTagName('img')[0].style.width=(api.winWidth-50) / 3 +'px'
+            }
+        }
+    };
+    // 点赞
+    function dianzan(el,id,type) {
+        var gray ='../../icon/momentHeart.png',red = '../../icon/momentHeart_like.png';
+        var thumbs_num = $(el).parent().parent().parent().find('.thumbs_num');
+        var str = "";
+        if ($(el).attr('flat') === "false"){
+            $(el).attr('flat','true');
+            $(el).find('.thumbs').css("backgroundImage",'url('+red+')');
+            if (thumbs_num.find('p').html().replace(/\s+/g,"") === ""){
+                thumbsPost(id,type)
+                  console.log('1111');
+                str =`<span class="true">${name}</span>`;
+                $(thumbs_num).css('display','block');
+                $(thumbs_num.find('p')).append(str)
+            }else {
+                console.log('3333');
+                thumbsPost(id,type)
+                $(thumbs_num).css('display','block');
+                str =`<span class="true">,${name}</span>`;
+                $(thumbs_num.find('p')).append(str);
+            }
+
+        } else {
+          console.log('112212');
+            thumbsPost(id,type)
+            var thumbs_numTrue =  $(el).parent().parent().parent().find('.thumbs_num').find('p').find('.true');
+            var index = $(el).parent().parent().parent().find('.thumbs_num p>span').length;
+            index === 1?$(thumbs_num).css('display','none'):"";
+            $(el).attr('flat','false');
+            $(el).find('.thumbs').css("backgroundImage",'url('+gray+')');
+            $(thumbs_numTrue).remove();
+        }
+    }
+    // 评论
+    function comment(el,id,type) {
+      var inputField = api.require('inputField');
+      inputField.open({
+        bgColor: '#f5f5f5',
+        lineColor: '#ccc',
+        fileBgColor: '#fff',
+        borderColor: '#ccc',
+        autoFocus:true,
+        placeholder:'评论',
+        sendBtn:{
+           bg: '#86c3f7',          //字符串类型;发送按钮常态背景色
+           inputBg:'#009fe8',      //(可选项)字符串类型;当输入文字发时送按钮的背景色;默认:bg的色值
+           bgHighlight: '#009fe8', //字符串类型;发送按钮点击时的高亮背景色
+           title: '发送',        //字符串类型;发送按钮的标题
+           titleSize: 14,       //数字类型;发送按钮的标题字体大小
+           titleColor: '#fff',  //字符串类型;发送按钮标题文字颜色
+           corner: 5,           //数字类型;发送按钮圆角大小
+           sendW:60,            //数字类型;发送按钮的宽
+           sendH:30,            //数字类型;发送按钮的高
+           marginRight:10,
+        },
+        placeholderStyles:{
+           color: '#ccc',     //字符串类型;占位文字颜色,支持rgb、rgba、#;默认:#696969
+           size: 14,          //数字类型;占位文字大小;默认:13
+           marginL: 10
+        },
+        fixedOn: api.frameName
+      }, function(ret, err) {
+        if (ret) {
+            commentFun(el,id,type,ret.msg)
+            inputField.close();
+        }
+      });
+      addEventWindow();// 监听关闭input
+    }
+    // 监听点击空白处关闭input
+    function addEventWindow() {
+      var inputField = api.require('inputField');
+      inputField.setInputFieldListener(function(ret, err) {
+          if (ret) {
+              if (ret.chatViewH === 0) {
+                var inputField = api.require('inputField');
+                inputField.close();
+              }
+          }
+      });
+    }
+    // 删除评论
+    function deleteComment(el,ids,jobNum) {
+      if (jobNum != uuid) return false;
+      api.actionSheet({
+          cancelTitle: '取消',
+          destructiveTitle: '删除',
+      }, function(ret, err) {
+          if (ret.buttonIndex === 1) {
+              $http.fnReuestDataNologing(UrlRouter.delComment,headers,'post',{id:ids},function (ret,err) {
+                  if (ret.code === 0) {
+                    $(el).remove();
+                  }
+              })
+          }
+      });
+    }
+    // 点赞接口
+    function thumbsPost(ids,types) {
+      var data ={
+        id:ids,
+        type:'record'
+      }
+      $http.fnReuestDataNologing(UrlRouter.thumbs,headers,'post',data,function (ret,err) {
+        // console.log(JSON.stringify(ret));
+      });
+    }
+    // 评论接口
+    function commentFun(el,ids,type,msg) {
+      var data = {
+        id:ids,
+        type:'record',
+        content:msg
+      }
+      $http.fnReuestDataNologing(UrlRouter.comment,headers,'post',data,function (ret,err) {
+        if (ret.code === 0) {
+          var comment = $(el).parent().parent().parent().find('.comment_content')
+          var html = `<p class="comment_c" onclick=deleteComment(this,${ret.data.id},${ret.data.staff_num})>
+                        <span class="title">${name}:</span>
+                        ${ret.data.content}
+                      </p>`;
+          $(comment).append(html);
+        }
+      });
+    }
+</script>

+ 180 - 0
widget/html/Qrcode/QRcodeList.html

@@ -0,0 +1,180 @@
+<!doctype html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <meta name="format-detection"content="telephone=no">
+    <title>index</title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/style.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style media="screen">
+      body,html{
+        margin: 0;
+        background: #fff;
+      }
+      #nav_items{
+          display: flex;
+          display: -webkit-flex;
+          justify-content: center;
+          -webkit-justify-content: center;
+          align-items: center;
+          position: relative;
+          top: 11.5px;
+      }
+      #nav_items li{
+          width: 85px;
+          height: 27px;
+          line-height: 27px;
+          color: #fff;
+          border: 1px solid #fff;
+          -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+          font-size: 14px;
+      }
+      #nav_items li:first-child{
+          border-top-left-radius: 2px;
+          border-bottom-left-radius: 2px;
+          border-right: 0;
+      }
+      #nav_items li:last-child{
+          border-top-right-radius: 2px;
+          border-bottom-right-radius: 2px;
+          border-left: 0;
+      }
+      #nav_items .active_nav{
+          background: #ffffff;
+          color: #009fe8;
+      }
+    </style>
+</head>
+<body>
+  <div class="api_layout">
+    <header class="header-login">
+       <img class="backBtn" src="../../image/btn_back.png" alt="" onclick="backIndex()">
+       <ul id="nav_items">
+         <li class="active_nav" tapmode="active_nav" onclick="randomSwitchBtn(this)">
+             二维码
+         </li>
+         <li tapmode="active_nav" onclick="randomSwitchBtn(this)">
+            记录
+         </li>
+       </ul>
+    </header>
+    <div class="api_nav">
+      <div class="header-nav scroller nav-haohuo" id="navScroll">
+
+      </div>
+    </div>
+  </div>
+</body>
+</html>
+<script type="text/javascript" src="../../script/api.js"></script>
+<!-- <script src="../../script/fastclick.min.js" charset="utf-8"></script> -->
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+    apiready = function () {
+        $api.fixStatusBar($api.dom('header') );
+        var depID = api.pageParam.depID,messageFlag = api.pageParam.messageFlag;
+        if (messageFlag == 'CODE') {
+          funIniGroup(depID,0);
+        }else if (messageFlag == 'RECORD') {
+          funIniGroup(depID,1);
+        }
+        keybackFun()//调用监听物理返回键
+    };
+    var eHeaderLis;
+    function funIniGroup(depID,id){
+            eHeaderLis = $api.domAll('#nav_items li'),
+            frames = [];
+        for (var i = 0,len = eHeaderLis.length; i < len; i++) {
+            frames.push( {
+                name: 'QRcode'+i,
+                url: 'QRcode'+i+'.html',
+                bgColor : '#f2f2f2',
+                bounces:true,
+                pageParam:{
+                  depIDs:depID
+                },
+            } )
+        }
+        api.openFrameGroup({
+            name: 'QRcodegroup',
+            scrollEnabled: true,
+            rect: {
+                x: 0,
+                y: $api.dom('header').offsetHeight,
+                w: api.winWidth,
+                h: $api.winHeight
+            },
+            preload:0,
+            index: id,
+            frames: frames
+        }, function (ret, err) {
+            menuSelected(ret.index);
+        });
+    };
+    function menuSelected(index) {
+        for (var i = 0; i < eHeaderLis.length; i++) {
+          if(index == i ){
+            $api.addCls(eHeaderLis[i], 'active_nav');
+          }else {
+            $api.removeCls(eHeaderLis[i], 'active_nav');
+          }
+        }
+    }
+    function randomSwitchBtn( tag ) {
+        if( tag == $api.dom('#nav_items li.active_nav') )return;
+        var eFootLis = $api.domAll('#nav_items li');
+            index = 0;
+        for (var i = 0,len = eFootLis.length; i < len; i++) {
+            if( tag == eFootLis[i] ){
+                index = i;
+            }else{
+                $api.removeCls(eFootLis[i], 'active_nav');
+            }
+        }
+        $api.addCls( eFootLis[index], 'active_nav');
+        api.setFrameGroupIndex({
+            name: 'QRcodegroup',
+            index: index
+        });
+    }
+    function backIndex() {
+      var newsFun ='newsFun()'
+      api.sendEvent({
+        name: 'myEvent',
+        extra: {
+            key1: 'value1',
+            key2: 'value2'
+        }
+      });
+      api.sendEvent({
+        name: 'newsBroadcast',
+        extra: {
+            key1: 'value1',
+            key2: 'value2'
+        }
+      });
+      api.closeWin({
+        name:'QRcodeLisr'
+      });
+    }
+    // 监听物理返回键
+    function keybackFun() {
+      api.addEventListener({
+      		name: 'keyback'
+      	}, function(ret, err){
+          api.sendEvent({
+            name: 'myEvent'
+          });
+          api.sendEvent({
+            name: 'newsBroadcast'
+          });
+          api.closeWin({
+            name:'QRcodeLisr'
+          });
+      });
+    }
+</script>

+ 110 - 0
widget/html/Qrcode/QrcodeDetaile.html

@@ -0,0 +1,110 @@
+<!doctype html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <meta name="format-detection"content="telephone=no">
+    <title>index</title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/style.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style media="screen">
+      body,html{
+        margin: 0;
+        background: #fff;
+      }
+    </style>
+</head>
+<body>
+  <div class="api_layout">
+    <header class="header-login">
+       <img class="backBtn" src="../../image/btn_back.png" alt="" onclick="backIndex()">
+       <p class="api_text"></p>
+    </header>
+  </div>
+</body>
+</html>
+<script type="text/javascript" src="../../script/api.js"></script>
+<!-- <script src="../../script/fastclick.min.js"></script> -->
+<!-- <script src="../../script/aui-toast.js" charset="utf-8"></script> -->
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+    var toast = new auiToast();
+    apiready = function () {
+        $api.fixStatusBar($api.dom('header') );
+        var info = $api.getStorage('data'),
+        name = JSON.parse(info).data.user.name,
+        uuid = JSON.parse(info).data.user.staff_num,
+        departmentID = JSON.parse(info).data.user.section_id,
+        id = api.pageParam.id,
+        departmentId = api.pageParam.departmentId,
+        flag = api.pageParam.flag,
+        title = api.pageParam.title,
+        pageId =api.pageParam.pageId;
+        detaile(name,uuid,pageId,departmentID,title,flag);
+        keybackFun();
+    };
+    // 详情
+    function detaile(uname,uuid,pageId,departmentID,title,flag) {
+      var browser = api.require('webBrowser');
+      browser.openView({
+          url: urlphp+"assets/html/QRcoddetails/index.html?name="+uname+"&uuid="+uuid+"&pageId="+pageId+"&departmentID="+departmentID,
+          rect: {
+              x: 0,
+              x: 0,
+              y: $api.dom('header').offsetHeight,
+              w: api.winWidth,
+              h: $api.winHeight
+          }
+      }, function(ret, err) {
+          switch (ret.state) {
+              case 0:
+                  break;
+              case 1:
+                  break;
+              case 2:
+                  break;
+              case 3:
+              if (flag) {
+                var api_text = $api.dom('.api_text');
+                $api.html(api_text, ret.title);
+              }else {
+                var api_text = $api.dom('.api_text');
+                $api.html(api_text, title);
+              }
+                  break;
+              case 4:
+                  break;
+              default:
+                  break;
+          }
+      });
+    }
+    function backIndex() {
+      var browser = api.require('webBrowser');
+        browser.historyBack(
+            function(ret, err) {
+                if (!ret.status) {
+                    api.closeWin();
+                }
+            }
+        );
+    }
+    // 监听物理返回键
+    function keybackFun() {
+      api.addEventListener({
+      		name: 'keyback'
+      	}, function(ret, err){
+          var browser = api.require('webBrowser');
+            browser.historyBack(
+                function(ret, err) {
+                    if (!ret.status) {
+                        api.closeWin();
+                    }
+                }
+            );
+
+      });
+    }
+</script>

+ 76 - 0
widget/html/Qrcode/QrcodeRecodeList.html

@@ -0,0 +1,76 @@
+<!doctype html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <meta name="format-detection"content="telephone=no">
+    <title>index</title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/style.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style media="screen">
+      body,html{
+        margin: 0;
+        background: #fff;
+      }
+    </style>
+</head>
+<body>
+  <div class="api_layout">
+    <header class="header-login">
+       <img class="backBtn" src="../../image/btn_back.png" alt="" onclick="backIndex()">
+        <p class="api_text" id="api_text"></p>
+    </header>
+    <div class="api_nav">
+      <div class="header-nav scroller nav-haohuo" id="navScroll">
+
+      </div>
+    </div>
+  </div>
+</body>
+</html>
+<script type="text/javascript" src="../../script/api.js"></script>
+<!-- <script src="../../script/fastclick.min.js" charset="utf-8"></script> -->
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+    apiready = function () {
+        $api.fixStatusBar($api.dom('header') );
+        var depID = api.pageParam.depID,title=api.pageParam.title;
+        $api.html(api_text, title);
+        openQrcodeRecodeList(depID)
+        keybackFun()//调用监听物理返回键
+    };
+    var eHeaderLis;
+    function openQrcodeRecodeList(depID){
+        $event.openFrame('QRcode0','header','',{depID:depID},'')
+    };
+    function backIndex() {
+      var newsFun ='newsFun()'
+      api.sendEvent({
+        name: 'myEvent'
+      });
+      api.sendEvent({
+        name: 'newsBroadcast'
+      });
+      api.closeWin({
+        name:'QrcodeRecodeList'
+      });
+    }
+    // 监听物理返回键
+    function keybackFun() {
+      api.addEventListener({
+      		name: 'keyback'
+      	}, function(ret, err){
+          api.sendEvent({
+            name: 'myEvent'
+          });
+          api.sendEvent({
+            name: 'newsBroadcast'
+          });
+          api.closeWin({
+            name:'QrcodeRecodeList'
+          });
+      });
+    }
+</script>

+ 119 - 0
widget/html/Qrcode/Sweepcode.html

@@ -0,0 +1,119 @@
+<!doctype html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <meta name="format-detection"content="telephone=no">
+    <title>index</title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/style.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style media="screen">
+      body,html{
+        margin: 0;
+        background: #fff;
+      }
+    </style>
+</head>
+<body>
+  <div class="api_layout">
+    <header class="header-login">
+       <img class="backBtn" src="../../image/btn_back.png" alt="" onclick="backIndex()">
+       <p class="api_text"></p>
+    </header>
+  </div>
+</body>
+</html>
+<script type="text/javascript" src="../../script/api.js"></script>
+<!-- <script src="../../script/fastclick.min.js"></script> -->
+<!-- <script src="../../script/aui-toast.js" charset="utf-8"></script> -->
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+    var toast = new auiToast();
+    apiready = function () {
+        $api.fixStatusBar($api.dom('header') );
+        var info = $api.getStorage('data'),
+        name = JSON.parse(info).data.user.name,
+        uuid = JSON.parse(info).data.user.staff_num,
+        departmentID = JSON.parse(info).data.user.section_id,
+        pageUrl =api.pageParam.pageUrl;
+        detaile(pageUrl,name,uuid,departmentID);
+        keybackFun();
+    };
+    // 详情
+    function detaile(url,uname,uuid,departmentID) {
+      var name,value,pageidA = [],Route = url,pageidName = [];
+      var str=url;
+      var num=str.indexOf("?");
+      str=str.substr(num+1);
+      var arr=str.split("&");
+      for(var i=0;i < arr.length;i++){
+          num=arr[i].indexOf("=");
+          if(num>0){
+              name=arr[i].substring(0,num);
+              value=arr[i].substr(num+1);
+              this[name]=value;
+              pageidName.push(name)
+              pageidA.push(value)
+          }
+      }
+      if(pageidA[2] != "" && pageidA[2] && pageidName[2] == 'pageId'){
+          Route = urlphp+"assets/html/QRcoddetails/index.html?name="+uname+"&uuid="+uuid+"&pageId="+pageidA[2]+"&departmentID="+departmentID
+      }
+      var browser = api.require('webBrowser');
+      browser.openView({
+          url: Route,
+          rect: {
+              x: 0,
+              x: 0,
+              y: $api.dom('header').offsetHeight,
+              w: api.winWidth,
+              h: $api.winHeight
+          }
+      }, function(ret, err) {
+          switch (ret.state) {
+              case 0:
+                  break;
+              case 1:
+                  break;
+              case 2:
+                  break;
+              case 3:
+              var api_text = $api.dom('.api_text');
+              $api.html(api_text, ret.title);
+                  break;
+              case 4:
+                  break;
+              default:
+                  break;
+          }
+      });
+    }
+    function backIndex() {
+      var browser = api.require('webBrowser');
+        browser.historyBack(
+            function(ret, err) {
+                if (!ret.status) {
+                    api.closeWin();
+                }
+            }
+        );
+    }
+    // 监听物理返回键
+    function keybackFun() {
+      api.addEventListener({
+      		name: 'keyback'
+      	}, function(ret, err){
+          var browser = api.require('webBrowser');
+            browser.historyBack(
+                function(ret, err) {
+                    if (!ret.status) {
+                        api.closeWin();
+                    }
+                }
+            );
+
+      });
+    }
+</script>

+ 110 - 0
widget/html/Qrcode/recordDetaile.html

@@ -0,0 +1,110 @@
+<!doctype html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <meta name="format-detection"content="telephone=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/style.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style media="screen">
+      body,html{
+        margin: 0;
+        background: #fff;
+      }
+    </style>
+</head>
+<body>
+  <div class="api_layout">
+    <header class="header-login">
+       <img class="backBtn" src="../../image/btn_back.png" alt="" onclick="backIndex()">
+       <p class="api_text">巡检详情</p>
+    </header>
+  </div>
+</body>
+</html>
+<script type="text/javascript" src="../../script/api.js"></script>
+<!-- <script src="../../script/fastclick.min.js"></script> -->
+<!-- <script src="../../script/aui-toast.js" charset="utf-8"></script> -->
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+    var toast = new auiToast();
+    apiready = function () {
+        $api.fixStatusBar($api.dom('header') );
+        var info = $api.getStorage('data'),
+        name = JSON.parse(info).data.user.name,
+        uuid = JSON.parse(info).data.user.staff_num,
+        departmentID = JSON.parse(info).data.user.section_id,
+        id = api.pageParam.id,
+        recordParentId = api.pageParam.recordParentId,
+        departmentIds = api.pageParam.departmentIds,
+        pageId =api.pageParam.pageId;
+        // var fitles = {
+        //     departmentId: departmentIds,
+        //     recordDynamicId:id,
+        //     userId:uuid
+        // };
+        // $http.fnReuestData(UrlRouter.addRecordDynamicApi,'','post',fitles,AlreadyReadData);
+        detaile(recordParentId,departmentID,name,uuid);
+        keybackFun();
+    };
+    // 详情
+    function detaile(recordParentId,departmentID,name,uuid) {
+      var browser = api.require('webBrowser');
+      browser.openView({
+          url: urlphp+"assets/html/QRcoddetails/static/recordDe.html?recordParentId="+recordParentId+"&departmentId="+departmentID+"&uname="+name+'&uuid='+uuid,
+          rect: {
+              x: 0,
+              x: 0,
+              y: $api.dom('header').offsetHeight,
+              w: api.winWidth,
+              h: $api.winHeight
+          }
+      }, function(ret, err) {
+          switch (ret.state) {
+              case 0:
+                  break;
+              case 1:
+                  break;
+              case 2:
+                  break;
+              case 3:
+              var api_text = $api.dom('.api_text');
+              $api.html(api_text, ret.title);
+                  break;
+              case 4:
+                  break;
+              default:
+                  break;
+          }
+      });
+    }
+    function backIndex() {
+      var browser = api.require('webBrowser');
+        browser.historyBack(
+            function(ret, err) {
+                if (!ret.status) {
+                    api.closeWin();
+                }
+            }
+        );
+    }
+    // 监听物理返回键
+    function keybackFun() {
+      api.addEventListener({
+      		name: 'keyback'
+      	}, function(ret, err){
+          var browser = api.require('webBrowser');
+            browser.historyBack(
+                function(ret, err) {
+                    if (!ret.status) {
+                        api.closeWin();
+                    }
+                }
+            );
+
+      });
+    }
+</script>

File diff suppressed because it is too large
+ 1243 - 0
widget/html/browseQrcode/addRecode.html


File diff suppressed because it is too large
+ 3198 - 0
widget/html/browseQrcode/browseQrcodeDe.html


+ 246 - 0
widget/html/browseQrcode/browseQrcode_win.html

@@ -0,0 +1,246 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="UTF-8" />
+    <meta
+      name="viewport"
+      content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"
+    />
+    <meta
+      name="format-detection"
+      content="telephone=no,email=no,date=no,address=no"
+    />
+    <meta name="format-detection" content="telephone=no" />
+    <title>浏览二维码详情</title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css" />
+    <!-- <link rel="stylesheet" href="../../css/projeck.css" /> -->
+    <style media="screen">
+      body,
+      html {
+        margin: 0;
+        background: #fff;
+      }
+      .header-login{
+        width: 100%;
+        height: 50px !important;
+        background-color: #009fe8;
+        display: flex;
+        align-items: center;
+        justify-content: space-between;
+      }
+      .backBtn{
+        height: 30px;
+        z-index: 1000;
+        margin-left: 5px;
+      }
+      .api_text{
+        height: 30px;
+        font-size: 18px;
+        color: #fff;
+      }
+      .aixin_img img {
+        width: 30px;
+        height: 30px;
+        display: block;
+        margin-right: 5px;
+      }
+
+    </style>
+  </head>
+
+  <body>
+    <div class="api_layout">
+      <header class="header-login">
+        <!-- api.closeWin() -->
+        <img
+          class="backBtn"
+          src="../../image/btn_back.png"
+          alt=""
+          onclick="qrodeBack()"
+        />
+        <p class="api_text"></p>
+        <div class="aixin_img" onclick="handleAddPageCollect()">
+          <img src="../../image/whiteAixin.png" id="aixinImgSrc" alt="">
+        </div>
+      </header>
+    </div>
+  </body>
+</html>
+<script type="text/javascript" src="../../script/api.js"></script>
+<script src="../../script/config.js" charset="utf-8"></script>
+<script src="../../script/zepto.js" charset="utf-8"></script>
+<script type="text/javascript">
+  var paramsData = {},
+  timeLeaveObj = {},
+  token = '',
+  userNo = '',
+  headers,
+  whetherCollect = {};
+  apiready = function () {
+    var info = $api.getStorage('data');
+    token = JSON.parse(info).data.access_token || '';
+    userNo = JSON.parse(info).data.user.staff_num;
+    headers = {
+        "Authorization": "Bearer " + token
+    };
+    $api.fixStatusBar($api.dom('header'));
+    $api.html($api.dom('.api_text'), api.pageParam.title);
+    openBrowseQrcode(api.pageParam.pageId);
+    handleGetPageCollectByPageIdAndUserNo()
+    api.addEventListener(
+      {
+        name: 'pageUserTime',
+      },
+      function (ret, err) {
+        paramsData = {
+          id: ret.value.id,
+          createDate: ret.value.createDate,
+          pageId: api.pageParam.pageId,
+          "status": "UPDATE"
+        };
+        $http.requestData(UrlRouter.getAddPageUserTime, 'post', paramsData)
+        .then(res => {
+        }).catch(err => {
+        })
+        api.closeWin();
+      }
+    );
+
+    api.addEventListener(
+      {
+        name: 'pageUserTimeDefault',
+      },
+      function (ret, err) {
+        paramsData = {
+          id: ret.value.id,
+          createDate: ret.value.createDate,
+          pageId: api.pageParam.pageId,
+          "status": "UPDATE"
+        };
+        $http.requestData(UrlRouter.getAddPageUserTime, 'post', paramsData)
+        .then(res => {
+          // console.log('aaa');
+          // console.log(JSON.stringify(res));
+        }).catch(err => {
+          // console.log(JSON.stringify(err));
+        })
+      }
+    );
+
+    api.addEventListener(
+      {
+        name: 'keyback',
+      },
+      function (ret, err) {
+        $http.requestData(UrlRouter.getAddPageUserTime, 'post', timeLeaveObj)
+        .then(res => {
+          if(res.code === '200') {
+            api.closeWin();
+          }
+        })
+      }
+    );
+  };
+
+  // 详情
+  function openBrowseQrcode(pageId) {
+    api.openFrame({
+      name: 'browseQrcodeDe',
+      url: 'browseQrcodeDe.html',
+      rect: {
+        x: 0,
+        y: $api.dom('header').offsetHeight,
+        w: 'auto',
+        h: 'auto',
+      },
+      animation: {
+        type: 'fade',
+      },
+      bounces: false,
+      scrollEnabled: true,
+      hScrollBarEnabled: false,
+      pageParam: {
+        pageId: pageId,
+      },
+    });
+    var data = {
+        "pageId": pageId,
+        "userId": userNo,
+        "status": "CREATE"
+    }
+    $http.requestData(UrlRouter.getAddPageUserTime, 'post', data)
+    .then(res => {
+      if(res.code === '200') {
+        timeLeaveObj = {
+          id: res.data.id,
+          createDate: res.data.createDate,
+          pageId: res.data.pageId,
+          "status": "UPDATE"
+        }
+      }
+    })
+  }
+  // 查看二维码是否收藏
+  function handleGetPageCollectByPageIdAndUserNo() {
+    let query = {
+      pageId: api.pageParam.pageId,
+      userNo: userNo
+    }
+    $http.requestData(UrlRouter.getPageCollectByPageIdAndUserNo,'get',query).then(res=> {
+      if(res.status === 20000) {
+        whetherCollect = res.data;
+        if (res.data !==1) {
+          $("#aixinImgSrc").attr("src", "../../image/redAixin.png");
+        } else if(res.data.id || res.data.pageId){
+          $("#aixinImgSrc").attr("src", "../../image/whiteAixin.png");
+        }
+      }
+    }).catch(err=> {
+      // console.log(JSON.stringify(err));
+    })
+  }
+  // 收藏二维码
+  function handleAddPageCollect() {
+    // 根据该二维码是否收藏返回的数据判断 如何收藏了也就是 whetherCollect == 1收藏
+     if(whetherCollect != 1) {
+       $("#aixinImgSrc").attr("src", "../../image/whiteAixin.png");
+       $http.requestData(`${UrlRouter.handleDelPageCollect}?id=${whetherCollect.id}`,'get','').then(res => {
+         if (res.status === 20000) {
+           api.toast({
+               msg: '取消收藏',
+               duration: 2000,
+               location: 'bottom'
+           });
+           api.sendEvent({
+                name: 'getCollectionListEvent',
+                extra: {}
+           });
+         }
+       }).catch(err => {
+         // console.log(JSON.stringify(err));
+       })
+     } else if(whetherCollect == 1){
+       $("#aixinImgSrc").attr("src", "../../image/redAixin.png");
+       $http.requestData(`${UrlRouter.handleAddPageCollect}?pageId=${api.pageParam.pageId}&userNo=${userNo}`,'get','').then(res => {
+         if (res.status === 20000) {
+           api.toast({
+               msg: '收藏成功',
+               duration: 2000,
+               location: 'bottom'
+           });
+         }
+       }).catch(err => {
+         // console.log(JSON.stringify(err));
+       })
+     }
+  }
+
+  function qrodeBack() {
+    $http.requestData(UrlRouter.getAddPageUserTime, 'post', timeLeaveObj)
+    .then(res => {
+      if(res.code === '200') {
+        api.closeWin();
+      }
+    })
+  }
+</script>

+ 94 - 0
widget/html/browseQrcode/browseRecodeDe.html

@@ -0,0 +1,94 @@
+<!doctype html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <meta name="format-detection"content="telephone=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/style.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style media="screen">
+      body,html{
+        margin: 0;
+        background: #fff;
+      }
+    </style>
+</head>
+<body>
+  <div class="api_layout">
+    <header class="header-login">
+       <img class="backBtn" src="../../image/btn_back.png" alt="" onclick="backIndex()">
+       <p class="api_text"></p>
+    </header>
+  </div>
+</body>
+</html>
+<script type="text/javascript" src="../../script/api.js"></script>
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+    var toast = new auiToast();
+    apiready = function () {
+        $api.fixStatusBar($api.dom('header') );
+        detaile(api.pageParam.id,api.pageParam.departmentID,api.pageParam.name,api.pageParam.uuid);
+        keybackFun();
+    };
+    // 详情
+    function detaile(id,departmentID,name,uuid) {
+      var browser = api.require('webBrowser');
+      browser.openView({
+          url: urlphp+"assets/html/QRcoddetails/static/recordDe.html?recordParentId="+id+"&departmentId="+departmentID+"&uname="+name+'&uuid='+uuid,
+          rect: {
+              x: 0,
+              x: 0,
+              y: $api.dom('header').offsetHeight,
+              w: api.winWidth,
+              h: $api.winHeight
+          }
+      }, function(ret, err) {
+          switch (ret.state) {
+              case 0:
+                  break;
+              case 1:
+                  break;
+              case 2:
+                  break;
+              case 3:
+              var api_text = $api.dom('.api_text');
+              $api.html(api_text, ret.title);
+                  break;
+              case 4:
+                  break;
+              default:
+                  break;
+          }
+      });
+    }
+    function backIndex() {
+      var browser = api.require('webBrowser');
+        browser.historyBack(
+            function(ret, err) {
+                if (!ret.status) {
+                    api.closeWin();
+                }
+            }
+        );
+    }
+    // 监听物理返回键
+    function keybackFun() {
+      api.addEventListener({
+      		name: 'keyback'
+      	}, function(ret, err){
+          var browser = api.require('webBrowser');
+            browser.historyBack(
+                function(ret, err) {
+                    if (!ret.status) {
+                        api.closeWin();
+                    }
+                }
+            );
+
+      });
+    }
+</script>

+ 94 - 0
widget/html/browseQrcode/browseRecodeItem.html

@@ -0,0 +1,94 @@
+<!doctype html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <meta name="format-detection"content="telephone=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/style.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style media="screen">
+      body,html{
+        margin: 0;
+        background: #fff;
+      }
+    </style>
+</head>
+<body>
+  <div class="api_layout">
+    <header class="header-login">
+       <img class="backBtn" src="../../image/btn_back.png" alt="" onclick="backIndex()">
+       <p class="api_text"></p>
+    </header>
+  </div>
+</body>
+</html>
+<script type="text/javascript" src="../../script/api.js"></script>
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+    var toast = new auiToast();
+    apiready = function () {
+        $api.fixStatusBar($api.dom('header') );
+        detaile(api.pageParam.id);
+        keybackFun();
+    };
+    // 详情
+    function detaile(id) {
+      var browser = api.require('webBrowser');
+      browser.openView({
+          url: urlphp+"assets/html/QRcoddetails/recordList-move.html?recordParentId="+id,
+          rect: {
+              x: 0,
+              x: 0,
+              y: $api.dom('header').offsetHeight,
+              w: api.winWidth,
+              h: $api.winHeight
+          }
+      }, function(ret, err) {
+          switch (ret.state) {
+              case 0:
+                  break;
+              case 1:
+                  break;
+              case 2:
+                  break;
+              case 3:
+              var api_text = $api.dom('.api_text');
+              $api.html(api_text, ret.title);
+                  break;
+              case 4:
+                  break;
+              default:
+                  break;
+          }
+      });
+    }
+    function backIndex() {
+      var browser = api.require('webBrowser');
+        browser.historyBack(
+            function(ret, err) {
+                if (!ret.status) {
+                    api.closeWin();
+                }
+            }
+        );
+    }
+    // 监听物理返回键
+    function keybackFun() {
+      api.addEventListener({
+      		name: 'keyback'
+      	}, function(ret, err){
+          var browser = api.require('webBrowser');
+            browser.historyBack(
+                function(ret, err) {
+                    if (!ret.status) {
+                        api.closeWin();
+                    }
+                }
+            );
+
+      });
+    }
+</script>

+ 94 - 0
widget/html/browseQrcode/browseUrl.html

@@ -0,0 +1,94 @@
+<!doctype html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <meta name="format-detection"content="telephone=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/style.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style media="screen">
+      body,html{
+        margin: 0;
+        background: #fff;
+      }
+    </style>
+</head>
+<body>
+  <div class="api_layout">
+    <header class="header-login">
+       <img class="backBtn" src="../../image/btn_back.png" alt="" onclick="backIndex()">
+       <p class="api_text"></p>
+    </header>
+  </div>
+</body>
+</html>
+<script type="text/javascript" src="../../script/api.js"></script>
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+    var toast = new auiToast();
+    apiready = function () {
+        $api.fixStatusBar($api.dom('header') );
+        detaile(api.pageParam.url);
+        keybackFun();
+    };
+    // 详情
+    function detaile(url) {
+      var browser = api.require('webBrowser');
+      browser.openView({
+          url: url=='#'?'www.404.com':url,
+          rect: {
+              x: 0,
+              x: 0,
+              y: $api.dom('header').offsetHeight,
+              w: api.winWidth,
+              h: $api.winHeight
+          }
+      }, function(ret, err) {
+          switch (ret.state) {
+              case 0:
+                  break;
+              case 1:
+                  break;
+              case 2:
+                  break;
+              case 3:
+              var api_text = $api.dom('.api_text');
+              $api.html(api_text, ret.title);
+                  break;
+              case 4:
+                  break;
+              default:
+                  break;
+          }
+      });
+    }
+    function backIndex() {
+      var browser = api.require('webBrowser');
+        browser.historyBack(
+            function(ret, err) {
+                if (!ret.status) {
+                    api.closeWin();
+                }
+            }
+        );
+    }
+    // 监听物理返回键
+    function keybackFun() {
+      api.addEventListener({
+      		name: 'keyback'
+      	}, function(ret, err){
+          var browser = api.require('webBrowser');
+            browser.historyBack(
+                function(ret, err) {
+                    if (!ret.status) {
+                        api.closeWin();
+                    }
+                }
+            );
+
+      });
+    }
+</script>

+ 396 - 0
widget/html/browseQrcode/echartLevel.html

@@ -0,0 +1,396 @@
+
+<!doctype html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <meta name="format-detection"content="telephone=no">
+    <title>记录列表</title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/popoPicker.css"/>
+    <link rel="stylesheet" href="../../css/style.css">
+    <style media="screen">
+      body,html{
+        margin: 0;
+        background: #fff;
+        overflow-x: hidden;
+      }
+      .hide{
+        display: none;
+      }
+      /*name*/
+      .date-lists{
+          width: 100%;
+          overflow-x: scroll;
+          white-space: nowrap;
+          box-sizing: border-box;
+      }
+      .date-lists::-webkit-scrollbar{
+        display: none;
+      }
+      .date-wrap{
+        width: 100%;
+        position: fixed;
+        top: 0;
+        left: 0;
+        box-sizing: border-box;
+        z-index: 9999;
+        background: #fff;
+      }
+      .date-lists li{
+          margin-right: 20px;
+          padding: 14px 10px;
+          font-size: 16px;
+          color: #333;
+          position: relative;
+      }
+      .date-lists .active{
+          color: #009FE8;
+      }
+      .date-lists .active:after{
+          content: "";
+          position: absolute;
+          bottom: 0;
+          left: 0;
+          width: 100%;
+          height: 2px;
+          background: #009FE8;
+      }
+       /*记录列表*/
+      .recode-wraps{
+        width: 95%;
+        border: 1px dashed #ECF0F1;
+        margin: auto;
+        margin-top: 10px;
+        border-radius: 5px;
+        padding-bottom: 5px;
+      }
+      .time{
+          background: #31A5FF;
+          padding: 5px 10px;
+          font-size: 14px;
+          display: inline-block;
+          color: #fff;
+          border-radius: 10px;
+          position: relative;
+          margin-bottom: 5px;
+      }
+      .recodeTitle{
+        display: block;
+        margin-top: 3px;
+      }
+      .name{
+          color: #000;
+          font-size: 14px;
+          /*font-weight: bold;*/
+          line-height: 1.6;
+      }
+      .main{
+          padding-left: 50px;
+          position: relative;
+          padding-bottom: 10px;
+      }
+      .main:after{
+          content: '';
+          position: absolute;
+          top: 0;
+          left: 30px;
+          width:2px;
+          background: #31A5FF;
+          height: 100%;
+      }
+      .main:before{
+          content: '';
+          position: absolute;
+          top: 5px;
+          left:23px;
+          width:15px;
+          background: #31A5FF;
+          height: 15px;
+          border-radius: 50%;
+      }
+      /*三角形*/
+      .Triangle{
+          position: absolute;
+          top: 5px;
+          left: -14px;
+          width: 0;
+          height: 0;
+          border-width: 8px;
+          border-style: solid;
+          border-color: transparent #31A5FF transparent transparent;
+          transform: rotate(360deg);
+      }
+      .recode-img{
+          display: inline-block;
+          width: 38px;
+          height: 46px;
+          background: url("../../icon/recode.png")  center no-repeat;
+          background-size: contain;
+          position: relative;
+          left: 12px;
+          top: 9px;
+      }
+      .state{
+        padding-left: 50px;
+        position: relative;
+      }
+      .stop{
+        position: absolute;
+        top: 6px;
+        left: 23px;
+        width: 15px;
+        height: 15px;
+        background: url("../../icon/stop.png")  center no-repeat;
+        background-size: contain;
+        z-index: 800;
+      }
+      .state:after{
+          content: '';
+          position: absolute;
+          top: -2px;
+          left: 30px;
+          width:2px;
+          background: #31A5FF;
+          height: 10px;
+        }
+        .recode-more{
+          padding: 20px;
+          text-align: center;
+        }
+        /*tool*/
+        .tool_itme{
+            padding: 10px;
+        }
+        .tool_time{
+          display: flex;
+          justify-content: space-between;
+        }
+        .tool_time input{
+            border: 1px solid #ccc;
+            padding: 8px 10px;
+            border-radius: 3px;
+            width: 46%;
+            box-sizing: border-box;
+           -webkit-appearance: none;
+           text-align: center;
+        }
+        .tool_seacrh_export{
+            padding: 10px 0;
+        }
+        .tool_seacrh_export button{
+            padding: 10px 0;
+            color: #fff;
+            background: #009FE8;
+            width: 100px;
+            border-radius: 4px;
+            text-align: center;
+            cursor: pointer;
+        }
+        .tool_seacrh_export button{
+            margin-right: 20px;
+        }
+    </style>
+</head>
+<body>
+  <div class="date-wrap" id="date_wrap">
+
+  </div>
+  <div class="api_layout" id="recode_item">
+      <div id="recode_content">
+
+      </div>
+  </div>
+  <div class="noText hide">
+    <img src="../../image/noText.png" alt="">
+  </div>
+  <a href="javascript:;" class="upload_file"></a>
+</body>
+</html>
+
+<script type="text/template" id="recodeTemplate">
+  {{~it:value}}
+       <div class="recode-wraps">
+           <span class="recode-img"></span>
+           <div class="recode-list">
+              {{ for (var t=0;t<value.length;t++) { }}
+                 <div class="main" onclick="openRecordDe('{{=value[t].recordParentId}}')">
+                     <p class="time">
+                         {{=value[t].createDate}}
+                         <span class="Triangle"></span>
+                         <span class="recodeTitle">{{=value[t].templateName}}</span>
+                     </p>
+                     <p class="name">{{=value[t].createName}}</p>
+                     <div class="name">
+                       {{?value[t].recordStatusInstanceList != null}}
+                         {{ for(var i= 0;i<value[t].recordStatusInstanceList.length;i++){ }}
+                           <div class="state-items">
+                             <p class="state-title" style="width:auto;display:{{=value[t].statusName == ""?'none':'inline-block'}}">{{=value[t].recordStatusInstanceList[i].statusName}}:</p>
+                               {{ for(var j= 0;j<value[t].recordStatusInstanceList[i].recordStatusInstanceItemList.length;j++){ }}
+                                 {{?value[t].recordStatusInstanceList[i].recordStatusInstanceItemList.length == 1}}
+                                   <span>{{=value[t].recordStatusInstanceList[i].recordStatusInstanceItemList[j].statusContent}}</span>
+                                 {{??}}
+                                   <span>{{=value[t].recordStatusInstanceList[i].recordStatusInstanceItemList[j].statusContent}},</span>
+                                 {{?}}
+                               {{ } }}
+                            </div>
+                          {{ } }}
+                        {{??}}
+                          <div class="state-items">
+                            <p class="state-title" style="width:auto;display:{{=value[t].statusName == ""?'none':'inline-block'}}">{{=value[t].statusName}}:</p>
+                            <span>{{=value[t].statusContent}}</span>
+                           </div>
+                        {{?}}
+                     </div>
+                 </div>
+                 {{?t == value.length-1}}
+                 {{?value[value.length-1].continueStatus == false}}
+                     <div class="state">
+                         <p class="time">
+                             结束:{{=value[t].createDate}}
+                             <span class="Triangle" style="top:6px;"></span>
+                         </p>
+                         <i class="stop"></i>
+                     </div>
+                   {{??}}
+                     <div class="state wait">
+                         <p class="time" style="background:#F7A329">
+                             等待处理......
+                             <span class="Triangle" style="top:6px;border-color: transparent #F7A329 transparent transparent;"></span>
+                         </p>
+                         <i class="stop" style="background: url('../../icon/Continue.png')  center no-repeat;background-size: contain;"></i>
+                     </div>
+                   {{?}}
+                 {{?}}
+             {{ } }}
+           </div>
+       </div>
+  {{~}}
+</script>
+<script type="text/template" id="TemplateName">
+  <ul class="date-lists flex-start">
+    {{~it:value:index}}
+        {{?index == 0}}
+          <li class="active" onclick="randomSwitchBtn(this,'{{=value.parentId}}','{{=value.templateId}}')">{{=value.templateName}}</li>
+        {{??}}
+          <li onclick="randomSwitchBtn(this,'{{=value.parentId}}','{{=value.templateId}}')">{{=value.templateName}}</li>
+        {{?}}
+    {{~}}
+  </ul>
+</script>
+
+<script type="text/javascript" src="../../script/api.js"></script>
+<script type="text/javascript" src="../../script/doT.min.js"></script>
+<script type="text/javascript" src="../../script/zepto.js"></script>
+<script src="../../script/popoPicker.js"></script>
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+    var isLoadding = false;
+    var skip = 1;
+    apiready = function () {
+      if (api.pageParam.type === 'my') {
+        var info = $api.getStorage('data'),
+        uuid = JSON.parse(info).data.user.staff_num;
+        myRecodeList(uuid,api.pageParam.pageId)
+      }else {
+        recodeList(api.pageParam)
+      }
+      // 上拉加载
+      api.addEventListener({
+        name : 'scrolltobottom',
+        extra : {
+          threshold : 0 //设置距离底部多少距离时触发,默认值为0,数字类型
+        }
+      }, function(ret, err) {
+        if (!isLoadding && api.pageParam.type === 'my') {
+          isLoadding = true;
+          myRecodeList(uuid,api.pageParam.pageId)
+        }else {
+          isLoadding = true;
+          recodeList(api.pageParam)
+        }
+      });
+    }
+    function recodeList(params) {
+      var data = {
+        ...params,
+        pageNumber:skip,
+        pageSize:10
+      }
+      $http.requestShowProgress(UrlRouter.getPageRecordInstanceListRadio,'get',data)
+      .then(ret=>{
+        isLoadding = false;
+        if (ret.data.length == 0 && skip == 1) {
+            $api.removeCls($api.dom('.noText'), 'hide');
+            $apis.html(recode_content,'#recodeTemplate','');
+            isLoadding = true;
+            return false;
+        }else {
+            $api.addCls($api.dom('.noText'), 'hide');
+        }
+        if (ret.data.length > 0) {
+          skip += 1;
+          $apis.append(recode_content,'#recodeTemplate',ret.data);
+        } else {
+           isLoadding =true;
+            api.toast({
+                msg: '没有更多数据',
+                duration: 2000,
+                location: 'bottom'
+            });
+        }
+      })
+      .catch(err=>{
+        api.toast({
+            msg: '加载超时,请检查网络',
+            duration: 2000,
+            location: 'bottom'
+        });
+      })
+    }
+    // 记录详情
+    function openRecordDe(id) {
+      $event.openTabLayout('recodeDetails','recodeDetails','记录详情',{recordParentId:id});
+    }
+    // 我的记录
+    function myRecodeList(uuid,id) {
+      var data = {
+        createBy:uuid,
+        pageId:id,
+        pageNumber:skip,
+        pageSize:10
+      }
+      $http.requestShowProgress(UrlRouter.getPageRecordInstanceList,'get',data)
+      .then(ret=>{
+        // console.log(JSON.stringify(ret));
+        isLoadding = false;
+        if (ret.data.length == 0 && skip == 1) {
+            $api.removeCls($api.dom('.noText'), 'hide');
+            $apis.html(recode_content,'#recodeTemplate','');
+            isLoadding = true;
+            return false;
+        }else {
+            $api.addCls($api.dom('.noText'), 'hide');
+        }
+        if (ret.data.length > 0) {
+          skip += 1;
+          $apis.append(recode_content,'#recodeTemplate',ret.data);
+        } else {
+           isLoadding =true;
+            api.toast({
+                msg: '没有更多数据',
+                duration: 2000,
+                location: 'bottom'
+            });
+        }
+      })
+      .catch(err=>{
+        api.toast({
+            msg: '加载超时,请检查网络',
+            duration: 2000,
+            location: 'bottom'
+        });
+      })
+    }
+</script>

+ 69 - 0
widget/html/browseQrcode/map.html

@@ -0,0 +1,69 @@
+<!doctype html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <meta name="format-detection"content="telephone=no">
+    <title>map</title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <style media="screen">
+        body,html{
+            margin: 0;
+            background: #fff;
+        }
+    </style>
+</head>
+<body>
+
+</body>
+</html>
+
+<script type="text/javascript" src="../../script/api.js"></script>
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+    apiready = function () {
+      openMap(api.pageParam.lon,api.pageParam.lat)
+    }
+    function openMap(lon,lat) {
+      var aMap = api.require('aMap');
+        aMap.open({
+            rect: {
+                x: 0,
+                y: 0,
+                w: 'auto',
+                h: 'auto'
+            },
+            showUserLocation: true,
+            showsAccuracyRing:false,
+            showsAccuracyRing:true,
+            zoomLevel: 17,
+            center: {
+                lon: api.pageParam.lon,
+                lat: api.pageParam.lat
+            },
+            fixed: true
+        },function (ret) {
+            if (ret.status) {
+              aMap.addAnnotations({
+                  annotations: [{
+                      id: 1,
+                      lon: lon,
+                      lat: lat
+                  }],
+                  draggable: false,
+                  timeInterval: 2.0
+              });
+            }
+        });
+    }
+    function keybackFun() {
+      api.addEventListener({
+          name: 'keyback'
+        }, function(ret, err){
+          api.closeWin();
+          var aMap = api.require('aMap');
+          aMap.close();
+      });
+    }
+</script>

+ 241 - 0
widget/html/browseQrcode/moreBrowse.html

@@ -0,0 +1,241 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <meta name="format-detection"content="telephone=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" href="../../css/swiper.css">
+    <link rel="stylesheet" href="../../css/animate.css">
+    <style media="screen">
+      .hide{
+        display: none;
+      }
+      .col{
+        padding: 0 10px;
+      }
+      .col label{
+        color: #333;
+        font-size: 16px;
+        padding: 15px 0 ;
+        position: relative;
+        padding-left: 15px;
+        width: 100%;
+      }
+      .col label:before{
+        content: '';
+        position: absolute;
+        top: 13px;
+        left: 0;
+        width: 3px;
+        height: 26px;
+        background: #009fe8;
+      }
+      .col label:after{
+        content: '';
+        position: absolute;
+        bottom: 0;
+        left: 0;
+        width: 100%;
+        height: 1px;
+        background: #ECF0F1;
+      }
+      /*浏览记录*/
+      .browse-items{
+        display: -webkit-flex;
+        display: flex;
+        justify-content: flex-start;
+        -webkit-justify-content: flex-start;
+        flex-wrap: wrap;
+        -webkit-flex-wrap: wrap;
+        align-items: center;;
+      }
+      .browse-info{
+        padding-top: 15px;
+      }
+      .browse-item{
+        width: 20%;
+        font-size: 14px;
+        color: #333;
+        text-align: center;
+        margin-bottom: 10px;
+      }
+      .browse-item img{
+        width: 100%;
+        border-radius: 50%;
+        object-fit: cover;
+        margin: auto;
+        margin-bottom: 5px;
+      }
+      .browse-item p{
+        text-overflow: ellipsis;
+        overflow: hidden;
+        white-space: nowrap;
+        min-width: 0;
+      }
+      .browse-item span{
+        display: block;
+        color: #fff;
+        /*background: red;*/
+        text-align: center;
+        margin: auto;
+        margin-bottom: 9px;
+        border-radius: 50%;
+      }
+      /*浏览弹出框*/
+      .modular{
+        position: fixed;
+        top: 0;
+        left: 0;
+        width: 100%;
+        height: 100%;
+        background: rgba(0,0,0, .6);
+        z-index: 1000;
+       }
+        .box{
+          -webkit-border-radius: 5px;
+          -moz-border-radius: 5px;
+          border-radius: 5px;
+          background: #fff;
+          position: absolute;
+          top: -10%;
+          bottom: 0;
+          left: 0;
+          right: 0;
+          margin: auto;
+          width: 270px;
+          height: 220px;
+          z-index: 200;
+          padding: 20px 10px;
+          -webkit-box-sizing: border-box;
+          -moz-box-sizing: border-box;
+          box-sizing: border-box;
+        }
+        .header-img{
+          text-align: center;
+        }
+        .header-img img{
+          width: 60px;
+          height: 60px;
+          -webkit-border-radius: 50%;
+          -moz-border-radius: 50%;
+          border-radius: 50%;
+          margin: auto;
+        }
+        .header-img p{
+          text-align: center;
+          -webkit-border-radius: 50%;
+          -moz-border-radius: 50%;
+          border-radius: 50%;
+        }
+        .header-img{
+          margin-bottom: 10px;
+        }
+        .personal-info p{
+          padding: 5px 0;
+          text-align: center;
+          font-size: 14px;
+          color: #333;
+        }
+        .personal-info .times{
+         color: #727472;
+       }
+    </style>
+  </head>
+  <body>
+    <div>
+      <div class="col">
+        <label>浏览记录</label>
+        <div class="browse-info">
+          <ul class="browse-items" id="browse_items">
+
+
+          </ul>
+        </div>
+      </div>
+    </div>
+    <!--浏览信息弹出框-->
+    <div class="modular hide animated" id="myModal">
+        <div class=" box">
+            <div class="header-img">
+                <!--<img src="http://jiewei-php-files.oss-cn-qingdao.aliyuncs.com/avatar/avatar_15038412.png" alt="">-->
+            </div>
+            <div class="personal-info">
+                <p class="name"></p>
+                <p class="dep"></p>
+                <p class="times"></p>
+            </div>
+        </div>
+    </div>
+  </body>
+</html>
+<script type="text/template" id="browseTl">
+  {{~it:value}}
+    {{?value.name != "" && value.name != null}}
+      {{?value.img == null || value.img == ""}}
+        <li class="browse-item" onclick="openModular('{{=value.name}}','{{=value.img}}','{{=value.department}}','{{=value.createDate}}')">
+          <span style="width: {{=imgSize()}}px;height:{{=imgSize()}}px;line-height:{{=imgSize()}}px;background-color:#{{=Math.random().toString(16).slice(2,8)}}">{{=value.name.substr(value.name.length-1,1)}}</span>
+          <p>{{=value.name}}</p>
+        </li>
+      {{??}}
+        <li class="browse-item" onclick="openModular('{{=value.name}}','{{=value.img}}','{{=value.department}}','{{=value.createDate}}')">
+          <img src="{{=String(value.img).substr(value.img, 4) == 'http'?value.img:urlphp+value.img}}" style="width: {{=imgSize()}}px;height:{{=imgSize()}}px" alt="">
+          <p>{{=value.name}}</p>
+        </li>
+      {{?}}
+    {{?}}
+  {{~}}
+</script>
+<script type="text/javascript" src="../../script/api.js"></script>
+<script type="text/javascript" src="../../script/doT.min.js"></script>
+<script type="text/javascript" src="../../script/zepto.js"></script>
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+apiready = function () {
+  $apis.UILoading('')
+  browseNum(api.pageParam.id)
+};
+// 浏览人数
+function browseNum(id) {
+  $http.fnReuestDataNologing(UrlRouter.getPageUserByPageId+id,'','get','',function (ret, err) {
+    if (ret.code === '200') {
+      $apis.html(browse_items,'#browseTl',ret.data);
+      $apis.CloseUILoading()
+    }
+  })
+}
+// 浏览人员详情
+function openModular(name, img, dep, time) {
+   $('.modular').show();
+   $('.box').addClass('animated bounceInDown');
+   setTimeout(function () {
+       $('.box').removeClass('animated bounceInDown')
+   }, 1000);
+   if (img == 'null') {
+     $('.box').find('.header-img').html(` <p style="background:#${Math.random().toString(16).slice(2,8)};width: 60px;height: 60px;line-height:60px;margin: auto">${name.substr(name.length-1,1)}</p>`)
+   }else {
+     var url = img.substr(img, 4)
+     if ( url == 'http') {
+       $('.box').find('.header-img').html(`<img src="${img}">`)
+     }else {
+       $('.box').find('.header-img').html(`<img src="${urlphp+img}">`)
+     }
+   }
+   $('.box').find('.name').html('姓名:'+name)
+   $('.box').find('.dep').html('部门:'+ dep)
+   $('.box').find('.times').html('最新浏览时间:' + time)
+}
+window.onclick = function(event) {
+  if (event.target ==  document.getElementById('myModal')) {
+      $('.modular').hide();
+  }
+}
+
+// 动态计算浏览人数img大小
+function imgSize() {
+  var width = document.body.clientWidth;
+  return  width / 5 - 23
+}
+</script>

+ 150 - 0
widget/html/browseQrcode/qrcodeShare.html

@@ -0,0 +1,150 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0" />
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title>二维码分享</title>
+    <style>
+        html body {
+            position: relative;
+        }
+
+        .api_layout {
+            margin: 25px 12px 0 12px;
+            background: #fff;
+            text-align: center;
+            box-shadow: 0px 0px 5px 5px rgba(0, 0, 0, 0.1);
+            border-radius: 10px;
+        }
+
+        header {
+            height: 58px;
+            line-height: 58px;
+            font-size: 18px;
+            color: #333333;
+            border-bottom: solid 1px #E0E1E2;
+        }
+
+        .footer {
+            height: 40px;
+            line-height: 40px;
+            font-size: 12px;
+            color: #6C6F74;
+            border-top: solid 1px #E0E1E2;
+        }
+
+        .qrcode_img {
+            margin: 17px;
+            width: 300px;
+            height: 300px;
+            margin: 0 auto;
+        }
+
+        .qrcode_img img {
+            display: block;
+            width: 100%;
+            height: 100%;
+        }
+
+        .handle_item {
+            margin: 80px 20px 0 20px;
+            text-align: center;
+            display: flex;
+            justify-content: space-between;
+            align-items: center;
+        }
+
+        .handle_item .handle_item_contaoner {
+            width: 100%;
+            height: 35px;
+            /*width: 145px;
+            height: 35px;*/
+            background: rgba(255, 255, 255, 1);
+            border-radius: 5px;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+        }
+
+        /*.handle_item_contaoner div:first-child {
+          line-height: 16px;
+        }*/
+
+        .handle_item_contaoner div:first-child img{
+          width: 16px;
+          height: 16px;
+          display: block;
+          line-height: 16px;
+        }
+
+        .handle_item_contaoner div:last-child {
+          margin-left: 8px;
+        }
+    </style>
+</head>
+
+<body style="background-color:#009FE8;">
+    <div class="api_layout">
+        <header>
+            App下载二维码
+        </header>
+        <div class="qrcode_img">
+            <img src="" id="qrOssImg" alt="">
+        </div>
+        <div class="footer" onclick="handleDownLoadQrCode()">
+            扫一扫下载
+        </div>
+    </div>
+    <div class="handle_item">
+        <div class="handle_item_contaoner" onclick="handleDownLoadQrImg()">
+          <!--  -->
+            <div><img src="../../image/downLoadQrCode.png" alt=""></div>
+            <div>保存到手机</div>
+        </div>
+        <!-- <div class="handle_item_contaoner">
+            <div><img src="../../image/shareImg.png" alt=""></div>
+            <div>分享</div>
+        </div> -->
+    </div>
+</body>
+
+</html>
+<script type="text/javascript" src="../../script/api.js"></script>
+<!-- <script src="../../script/aui-toast.js" charset="utf-8"></script> -->
+<!-- <script src="../../script/fastclick.min.js" charset="utf-8"></script> -->
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+    var token, uuid, headers,imgSrc = '',qr_oss_mg='';
+    var toast = new auiToast();
+    apiready = function() {
+        var info = $api.getStorage('data'),
+            user = JSON.parse(info).data.user;
+        token = JSON.parse(info).data.access_token;
+        uuid = JSON.parse(info).data.user.staff_num;
+        headers = {
+            "Authorization": "Bearer " + token
+        };
+        imgSrc = `https://jiewei-icon.oss-cn-beijing.aliyuncs.com/下载二维码/${ossImgName}.png`
+        qr_oss_mg = $api.byId('qrOssImg');
+        qr_oss_mg.src = imgSrc
+    };
+
+
+    function handleDownLoadQrImg() {
+        api.saveMediaToAlbum({
+            path: imgSrc
+        }, function(ret, err) {
+            if (ret && ret.status) {
+              api.toast({
+                msg: '保存成功',
+                duration: 2000,
+                location: 'bottom',
+              });
+            } else {
+                alert('保存失败');
+            }
+        });
+    }
+</script>

+ 677 - 0
widget/html/browseQrcode/recodeDetails.html

@@ -0,0 +1,677 @@
+<!doctype html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <meta name="format-detection"content="telephone=no">
+    <title>浏览记录详情</title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style media="screen">
+      body,html{
+        margin: 0;
+        background: #fff;
+      }
+      *{
+          box-sizing: border-box;
+          outline: none;
+      }
+      .note{
+          border-bottom: 20px solid #ECF0F1;
+          padding-bottom: 20px;
+      }
+      .note:last-child{
+        border-bottom: 0 solid #ECF0F1;
+        padding-bottom: 0;
+      }
+      .noneMargin:last-child{
+          margin-bottom: 20px
+      }
+      /*header*/
+      .top {
+          text-align: center;
+          margin: 20px;
+      }
+      .top .icon {
+          text-align: center;
+      }
+      .note-name, .note-time {
+          font-size: 18px;
+          line-height: 30px;
+          color: #2c3e50;
+      }
+      .top .name {
+          font-size: 18px;
+          color: #7f8c8d;
+      }
+      /*状态*/
+      .m-card{
+        padding: 0 15px;
+      }
+      .m-card .header {
+          margin: 0 -15px;
+          line-height: 40px;
+          border-bottom: 1px solid #ECF0F1;
+          background-color: #ECF0F1;
+          font-size: 18px;
+          position: relative;
+      }
+      .m-card .header span {
+          margin-left: 15px;
+          color: #2980B9;
+          padding: 2px 0 2px 10px;
+      }
+      .m-card .header:after{
+          content: '';
+          position: absolute;
+          top:8px;
+          left: 14px;
+          width: 3px;
+          height: 60%;
+          background: #3498DB;
+      }
+      .cell-item {
+          display: -webkit-flex;
+          display: flex;
+          justify-content: flex-start;
+          position: relative;
+          overflow: hidden;
+          margin: 15px 0;
+      }
+      .m-cell {
+          background-color: #FFF;
+          position: relative;
+          z-index: 1;
+      }
+      /*.m-cell:after {*/
+      /*    content: '';*/
+      /*    position: absolute;*/
+      /*    z-index: 0;*/
+      /*    bottom: 0;*/
+      /*    left: 0;*/
+      /*    width: 100%;*/
+      /*    height: 1px;*/
+      /*    border-bottom: 1px solid #B2B2B2;*/
+      /*    -webkit-transform: scaleY(0.5);*/
+      /*    transform: scaleY(0.5);*/
+      /*    -webkit-transform-origin: 0 100%;*/
+      /*    transform-origin: 0 100%;*/
+      /*}*/
+      /*记录项*/
+      .cell-left {
+          width: 30%;
+          font-size: 16px;
+          overflow: hidden;
+          text-overflow: ellipsis;
+          white-space: wrap;
+          color: #333;
+          display: -webkit-box;
+          display: -webkit-flex;
+          display: -ms-flexbox;
+          display: flex;
+          -webkit-box-align: center;
+          -webkit-align-items: center;
+          -ms-flex-align: center;
+          align-items: center;
+      }
+      .cell-right{
+        display: flex;
+        font-weight: bold;
+        -webkit-justify-content: flex-start;
+        justify-content: flex-start;
+        text-align: left;
+        width: 70%;
+        min-height: 1rem;
+        color: #525252;
+        font-size: 16px;
+        padding-right: 0.24rem;
+        padding-left: 10px;
+      }
+      .m-card .m-cell .cell-title {
+          width: 30%;
+          color: #333;
+          font-size: 16px;
+          margin: 10px 0;
+      }
+      .m-card .m-cell .cell-content {
+          color: #525252;
+          font-size:16px;
+          font-weight: bold;
+          margin: 10px 0;
+          padding: 0 5px;
+          width: 70%;
+      }
+      .call-centers{
+        display: flex;
+        justify-content: center;
+        align-items: center;
+      }
+      .m-card .card-box .title {
+          font-size: 16px;
+          margin: 10px 0;
+      }.m-card .card-box .content {
+          padding: 10px;
+          border-width: 2px;
+          border-style: dashed;
+          border-color: #ECF0F1;
+          margin-bottom: 5px;
+      }
+      /*file*/
+      .card-box{
+          margin-bottom: 15px;
+      }
+     .card-box .content .file-item {
+          display: inline-block;
+          padding: 10px;
+          width: 32%;
+          vertical-align: top;
+          text-align: center;
+          height: 100px;
+      }
+      .card-box .content .file-item img {
+          margin: 0 auto;
+          width: 40px;
+      }
+      .card-box .content .file-item p {
+          margin-top: 10px;
+          width: 100%;
+          font-size: 14px;
+          color: #7f8c8d;
+          overflow: hidden;
+          text-overflow: ellipsis;
+          display: -webkit-box;
+          -webkit-line-clamp: 2;
+          line-clamp: 2;
+          -webkit-box-orient: vertical;
+      }
+      /*img*/
+      .m-card .card-box .img-list> .img-item {
+          display: inline-block;
+          width: 32%;
+      }
+     .card-box .img-list .img-item {
+          position: relative;
+          display: inline-block;
+      }
+      .card-box .img-list .img-item img {
+          z-index: 0;
+          height: 27vw;
+          width: 27vw;
+          object-fit: cover;
+          border-radius: 5px;
+      }
+      /*检查项*/
+      /*提交按钮*/
+      .submitBtn{
+        width:100%;
+        color:#fff;
+        position: fixed;bottom: 0;left:0;
+        z-index:100;
+        margin: 0;
+        height: 55px;
+        line-height: 55px;
+        font-size: 18px;
+        background: #009fe8
+      }
+       /*浏览记录*/
+      .browse-item{
+        padding: 15px;
+        position: relative;
+      }
+      .browse-item:after{
+          content: '';
+          position: absolute;
+          bottom: 0;
+          left: 0;
+          width: 100%;
+          height: 1px;
+          background: #ECF0F1;
+      }
+     .header-ico{
+        width: 40px;
+        height: 40px;
+        border-radius: 50%;
+        line-height: 40px;
+        text-align: center;
+        object-fit: cover;
+         margin-right: 10px;
+         font-size: 13px;
+     }
+     .browse-time{
+        font-size: 13px;
+        color: #BDC3C7;
+        line-height: 1.5;
+     }
+     .personal-info,.browse-num{
+        color: #2C3E50;
+        font-size: 13px;
+        font-style: normal;
+     }
+     .browse-title{
+       color: #333;
+       font-size: 16px;
+       padding: 15px 0 ;
+       position: relative;
+       width: 100%;
+       padding-left: 25px;
+     }
+     .browse-title:before{
+       content: '';
+       position: absolute;
+       top: 13px;
+       left: 14px;
+       width: 3px;
+       height: 26px;
+       background: #009fe8;
+     }
+     .browse-title:after{
+       content: '';
+       position: absolute;
+       bottom: 0;
+       left: 0;
+       width: 100%;
+       height: 1px;
+       background: #ECF0F1;
+     }
+     /*返回当前二维码*/
+     .backQrcode{
+       width: 45px;
+       height: 45px;
+       -webkit-border-radius: 50%;
+       -moz-border-radius: 50%;
+       border-radius: 50%;
+       border: 1px solid #f2f2f2;
+       position: fixed;
+       bottom: 50px;
+       right: 20px;
+       z-index: 9999;
+       background: #fff;
+       opacity: 1;
+       transition: .5s;
+       text-align: center;
+       padding: 5px;
+      }
+      .backQrcode img{
+        width: 100%;
+        height: 100%;
+      }
+      /*position*/
+      .flex-starts{
+          display: flex;
+          justify-content: space-between;
+          white-space: nowrap;
+          align-items: center;
+      }
+      .flex-spaces{
+          display: flex;
+          justify-content: space-between;
+          white-space: nowrap;
+          align-items: center;
+      }
+      .ico-map{
+          width: 25px;
+          height: 25px;
+          background: url("../../icon/position.png") no-repeat;
+          background-position: center;
+          background-size: cover;
+      }
+      .more-icon{
+        width: 20px;
+        height: 20px;
+        background: url("../../image/more.png") no-repeat;
+        background-position: center;
+        background-size: cover;
+      }
+      .position{
+          padding: 5px 15px;
+          border-radius: 50px;
+          background: #F0F0F0;
+          font-size: 14px;
+          margin-top:10px;
+      }
+      .map1{
+          color: #009FE8;
+          margin-bottom: 5px;
+          text-align: left;
+      }
+      .map-name {
+        width: 78%;
+      }
+      .names{
+        width: 85%;
+        white-space: normal;
+      }
+    </style>
+</head>
+<body>
+  <div class="g-flexview" id="g_flexview"></div>
+</body>
+</html>
+<script type="text/template" id="recordTemplate">
+  {{?it.recordInstanceList !=null}}
+    {{ for (var i = 0;i<it.recordInstanceList.length;i++) { }}
+      <div class="note" id="note${recordInstanceList[r].id}">
+          <div class="top recordInfo">
+              <div class="icon"><img src="../../icon/0001.png"></div>
+              <div class="note-name">{{=it.recordInstanceList[i].templateName}}</div>
+              <div class="note-time">{{=it.recordInstanceList[i].createDate}}</div>
+              <div class="name">{{=it.recordInstanceList[i].createName}}</div>
+              {{?it.recordInstanceList[i].spName}}
+              <div class="position flex-spaces" onclick="openMaps('{{=it.recordInstanceList[i].lng}}','{{=it.recordInstanceList[i].lat}}')">
+                  <div class="map-name flex-starts">
+                    <i class="ico-map"></i>
+                    <div class="names">
+                      <p class="map1">{{=it.recordInstanceList[i].spName}}</p>
+                    </div>
+                  </div>
+                  <p class="more-icon"></p>
+              </div>
+              {{?}}
+          </div>
+          <!--状态-->
+          {{? it.recordInstanceList[i].recordStatusInstanceList != null && it.recordInstanceList[i].recordStatusInstanceList != ""}}
+            <div class="m-card">
+                <div class="header"><span>状态</span></div>
+                <div class="content">
+                    <div class="m-cell statusItem">
+                        {{ for (var j = 0;j<it.recordInstanceList[i].recordStatusInstanceList.length;j++) { }}
+                        <div class="cell-item">
+                            <div class="cell-left">{{=it.recordInstanceList[i].recordStatusInstanceList[j].statusName}}</div>
+                            <div class="cell-right" id="statusP${recordInstanceList[r].id+u}">
+                                {{ for (var u = 0;u<it.recordInstanceList[i].recordStatusInstanceList[j].recordStatusInstanceItemList.length;u++) { }}
+                                <span style="color:{{=it.recordInstanceList[i].recordStatusInstanceList[j].recordStatusInstanceItemList[u].statusColor}};">
+                                    {{=it.recordInstanceList[i].recordStatusInstanceList[j].recordStatusInstanceItemList[u].statusContent}}
+                                </span>
+                                {{ } }}
+                            </div>
+                        </div>
+                        {{ } }}
+                    </div>
+                </div>
+            </div>
+          {{?}}
+          {{?it.recordInstanceList[i].statusName != ""}}
+            <div class="m-card">
+                <div class="header"><span>状态</span></div>
+                <div class="content">
+                    <div class="m-cell">
+                        <div class="cell-item">
+                            <div class="cell-left">{{=it.recordInstanceList[i].statusName}}</div>
+                            <div class="cell-right"><span class="blue">{{=it.recordInstanceList[i].statusContent}}</span></div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+          {{?}}
+          <!--记录项-->
+          {{?it.recordInstanceList[i].inputList != null && it.recordInstanceList[i].inputList != ""}}
+            {{ for(var prop in it.recordInstanceList[i].inputList) { }}
+              <div class="m-card">
+                <div class="header">
+                    <span>{{=prop==""?'记录项':prop}}</span>
+                </div>
+              <div class="content contents">
+              {{ for (var t = 0;t<it.recordInstanceList[i].inputList[prop].length;t++) { }}
+                {{? it.recordInstanceList[i].inputList[prop][t].inputType === 'photo' && it.recordInstanceList[i].inputList[prop][t].values !=""}}
+                    <div class="card-box">
+                        <div class="title">{{=it.recordInstanceList[i].inputList[prop][t].inputName}}:</div>
+                        <div class="content">
+                            <div class="my-gallery img-list" data-pswp-uid="1">
+                                {{ for (var s = 0;s<it.recordInstanceList[i].inputList[prop][t].values.length;s++) { }}
+                                <div class="img-dv img-item" onclick="browseImg('{{=i}}','{{=it.recordInstanceList[i].inputList[prop][t].values}}')">
+                                    <a href="javascript:;">
+                                       <img src="{{=it.recordInstanceList[i].inputList[prop][t].values[s]}}?x-oss-process=style/img-200">
+                                    </a>
+                                </div>
+                                {{ } }}
+                            </div>
+                        </div>
+                    </div>
+                {{?? it.recordInstanceList[i].inputList[prop][t].inputType === 'file' && it.recordInstanceList[i].inputList[prop][t].values !=""}}
+                    <div class="card-box">
+                      <div class="title">{{=it.recordInstanceList[i].inputList[prop][t].inputName}}:</div>
+                      <div class="content">
+                        <div class="file-list">
+                            {{ for (var f = 0;f<it.recordInstanceList[i].inputList[prop][t].values.length;f++) { }}
+                              <div class="file-item" onclick="browseFile('{{=it.recordInstanceList[i].inputList[prop][t].values[f].substr(0,it.recordInstanceList[i].inputList[prop][t].values[f].lastIndexOf('-'))}}')">
+                                <a href="javascript:;">
+                                    <img src="../../icon/{{=it.recordInstanceList[i].inputList[prop][t].values[f].substr(it.recordInstanceList[i].inputList[prop][t].values[f].lastIndexOf(".")+1)}}.png">
+                                    <p>{{=it.recordInstanceList[i].inputList[prop][t].values[f].substr(it.recordInstanceList[i].inputList[prop][t].values[f].lastIndexOf('-')+1)}}</p>
+                                </a>
+                              </div>
+                            {{ } }}
+                        </div>
+                      </div>
+                  </div>
+                {{?? it.recordInstanceList[i].inputList[prop][t].inputType === 'video' && it.recordInstanceList[i].inputList[prop][t].values !=""}}
+                    <div class="card-box">
+                        <div class="title">{{=it.recordInstanceList[i].inputList[prop][t].inputName}}:</div>
+                        <div class="content vedios">
+                            <video controls webkit-playsinline="true" class="video" style="width: 100%;height: 200px;">
+                                <source src="{{=it.recordInstanceList[i].inputList[prop][t].values[0]}}">
+                            </video>
+                        </div>
+                    </div>
+                {{?? it.recordInstanceList[i].inputList[prop][t].inputType === 'mp3' && it.recordInstanceList[i].inputList[prop][t].values !=""}}
+                      <div class="card-box" style="margin-bottom: 15px;">
+                          <div class="title titleAudio">{{=it.recordInstanceList[i].inputList[prop][t].inputName}}:</div>
+                          <div class="audio_a" style="position: relative;">
+                              <audio id="audio_src" controls style="width:100%;">
+                                  <source src="{{=it.recordInstanceList[i].inputList[prop][t].values[0]}}">
+                              </audio>
+                          </div>
+                      </div>
+                    </div>
+                {{?? it.recordInstanceList[i].inputList[prop][t].values !=""}}
+                    <div class="m-cell recordItem">
+                        <div class="cell-item">
+                            <div class="cell-title">{{=it.recordInstanceList[i].inputList[prop][t].inputName}}:</div>
+                            <div class="cell-content">
+                              <span class="normal">{{=it.recordInstanceList[i].inputList[prop][t].values.join(',')}}</span>
+                            </div>
+                        </div>
+                    </div>
+                {{?}}
+              {{ } }}
+          </div>
+        </div>
+       {{ } }}
+       {{?}}
+      <!--检查项-->
+      {{?it.recordInstanceList[i].checkItemMap != null && it.recordInstanceList[i].checkItemMap != ""}}
+      <div class="m-card inspectItems">
+          <div class="header">
+              <span>检查项</span>
+          </div>
+          <div class="content">
+              {{ for(var key in it.recordInstanceList[i].checkItemMap) { }}
+              <div class="m-cell inspectItem">
+                  <div class="cell-item">
+                      <div class="cell-title" style="width: 80%">{{=it.recordInstanceList[i].checkItemMap[key][0].groupName}}</div>
+                      <div class="cell-content call-centers" style="width:20%;">
+                        {{ for (var c = 0;c<it.recordInstanceList[i].checkItemMap[key].length;c++) { }}
+                          <span class="normal">{{=it.recordInstanceList[i].checkItemMap[key][c].itemValue ===""?"暂无内容":it.recordInstanceList[i].checkItemMap[key][c].itemValue}}</span>
+                        {{ } }}
+                      </div>
+                  </div>
+              </div>
+              {{ } }}
+          </div>
+      </div>
+      {{?}}
+      </div>
+    {{ } }}
+    {{?}}
+    <div class="browse-wrap" id="browse_items"></div>
+    {{?it.pageRecord != null}}
+        <button type="button" class="btn-block btn-primary submitBtn" onclick="nextStep('{{=it.pageRecord.templateName}}','{{=it.pageId}}','{{=it.pageRecord.id}}','{{=it.recordParentId}}')">{{=it.pageRecord.templateName}}</button>
+        {{=bottom()}}
+    {{?}}
+    <!--返回当前二维码-->
+    <div class="backQrcode" onclick="backQrcode('{{=it.pageId}}','{{=it.pageName}}')">
+        <img src="../../icon/qrcode.png" alt="">
+    </div>
+</script>
+<script type="text/template" id="browseTl">
+  <label class="browse-title">浏览记录</label>
+  <ul class="browse-items" style="margin-bottom:35px;">
+    {{~it:value}}
+      <li class="browse-item flex-space">
+          <div class="flex-start">
+            {{?value.img == null}}
+              <p class="header-ico" style="background:#{{=Math.random().toString(16).slice(2,8)}}">
+                  {{=value.name.substr(value.name.length-1)}}
+              </p>
+            {{??}}
+               <img src="{{=value.img.substr(value.img, 4) == 'http'?value.img:urlImgUrl+value.img}}" class="header-ico" alt="">
+            {{?}}
+            <div class="browse-time" style="margin-right:10px">
+              <p class="personal-info">{{=value.name}}</p>
+              <p class="personal-info">{{=value.department}}</p>
+            </div>
+            <div class="browse-time">
+                <p>最近:{{=value.lastDate.substr(5)}}</p>
+                <p>首次:{{=value.createDate.substr(5)}}</p>
+            </div>
+          </div>
+          <i class="browse-num">{{=value.count}}次</i>
+        </li>
+    {{~}}
+  </ul>
+</script>
+<script type="text/javascript" src="../../script/api.js"></script>
+<script type="text/javascript" src="../../script/doT.min.js"></script>
+<script src="../../script/zepto.js" charset="utf-8"></script>
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+    var name= "",uuid="",organizationIds="";
+    apiready = function () {
+      var info = $api.getStorage('data');
+      name = JSON.parse(info).data.user.name;
+      uuid = JSON.parse(info).data.user.staff_num;
+      organizationIds = JSON.parse(info).data.user.section_id;
+      recodeDetails(api.pageParam.recordParentId);
+      // 返回二维码
+      scrollBottom()
+    };
+    function recodeDetails(id) {
+      var params = {
+        recordParentId:id,
+        departmentId:organizationIds
+      }
+
+      $http.requestShowProgress(UrlRouter.getRecordInstanceDetailList,'get',params)
+      .then(ret=>{
+          if (ret.code == '200') {
+            $apis.html(g_flexview,'#recordTemplate',ret.data)
+            // 添加浏览记录
+            var param={
+              recordParentId:id,
+              userId:uuid
+            }
+            return $http.requestData(UrlRouter.addRecordUser,'post',param)
+          }
+      })
+      .then(ret=>{
+        // console.log(JSON.stringify(ret));
+        browseNum(id)
+      })
+      .catch(err=>{})
+    }
+    function bottom() {
+      $api.css($api.dom('.g-flexview'), 'padding-bottom: 30px;');
+      return "";
+    }
+    // 文件浏览
+    function browseFile(paths) {
+      var flag = true;
+      if (paths.substr(paths.lastIndexOf(".")+1) == 'zip'&& paths.substr(paths.lastIndexOf(".")+1) == 'rar') {
+        flag = false;
+      }else {
+        api.showProgress({
+          title: '提示',
+          text: '打开文件中...',
+        });
+      }
+      api.download({
+          url: paths,
+          report: true,
+          cache: true,
+          allowResume: true
+      }, function(ret, err) {
+          if (ret.state == 1) {
+             api.hideProgress();
+              if (flag) {
+                var superFile = api.require('superFile');
+                superFile.open({path:ret.savePath});
+              }
+              setTimeout(function () {
+                api.toast({
+                    msg: '下载成功',
+                    duration: 2000,
+                    location: 'top'
+                });
+              },100)
+          }
+      });
+    }
+    // 图片浏览
+    function browseImg(i,value) {
+      var imageBrowser = api.require('imageBrowser');
+        imageBrowser.openImages({
+            imageUrls: value.split(','),
+            activeIndex:i,
+            showList:false
+        });
+    }
+    // 如果有下一步执行次方法
+    function nextStep(title,pageId,pageRecordId,recordTrueID) {
+      var param= {
+          pageId: pageId,
+          pageRecordId: pageRecordId,
+          createBy: uuid,
+          createName: name,
+          recordTrueID: recordTrueID,
+          organizationIds:organizationIds
+      }
+      $event.openTabLayout('addRecode','addRecode',title,param);
+    }
+    // 浏览人数
+    function browseNum(recordParentId) {
+      $http.fnReuestDataNologing(UrlRouter.getRecordUserById+recordParentId,'','get','',function (ret, err) {
+        if (ret.code === '200') {
+          $apis.html(browse_items,'#browseTl',ret.data);
+        }
+      })
+    }
+    // 返回二维码js
+    function scrollBottom() {
+        var window1 = $(window).height();
+        var documents = $(document).height();
+        if (window1 == documents) {
+            $(".backQrcode").css({bottom:'50px',opacity:'1'})
+            return false;
+        }
+        $(window).on('scroll',function(){
+            if($(window).scrollTop()>=10){
+                $(".backQrcode").css({bottom:'50px',opacity:'1'})
+            }
+            else if ($(window).scrollTop() <= 50) {
+                $(".backQrcode").css({bottom:'0',opacity:'0'})
+            }
+        });
+    }
+    // 返回二维码
+    function backQrcode(id,title) {
+      var param={
+        pageId:id,
+        title:title
+      }
+      $event.openWin('browseQrcode_win'+Math.random(),'browseQrcode_win',param,'');
+    }
+    // 打开地图
+    function openMaps(lon,lat) {
+      $event.openTabLayout('map','map','',{lon:lon,lat:lat})
+    }
+</script>

+ 496 - 0
widget/html/browseQrcode/recodeItem.html

@@ -0,0 +1,496 @@
+
+<!doctype html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <meta name="format-detection"content="telephone=no">
+    <title>记录列表</title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/popoPicker.css"/>
+    <link rel="stylesheet" href="../../css/style.css">
+    <style media="screen">
+      body,html{
+        margin: 0;
+        background: #fff;
+        overflow-x: hidden;
+      }
+      .hide{
+        display: none;
+      }
+      /*name*/
+      .date-lists{
+          width: 100%;
+          overflow-x: scroll;
+          white-space: nowrap;
+          box-sizing: border-box;
+      }
+      .date-lists::-webkit-scrollbar{
+        display: none;
+      }
+      .date-wrap{
+        width: 100%;
+        position: fixed;
+        top: 0;
+        left: 0;
+        box-sizing: border-box;
+        z-index: 9999;
+        background: #fff;
+      }
+      .date-lists li{
+          margin-right: 20px;
+          padding: 14px 10px;
+          font-size: 16px;
+          color: #333;
+          position: relative;
+      }
+      .date-lists .active{
+          color: #009FE8;
+      }
+      .date-lists .active:after{
+          content: "";
+          position: absolute;
+          bottom: 0;
+          left: 0;
+          width: 100%;
+          height: 2px;
+          background: #009FE8;
+      }
+       /*记录列表*/
+      .recode-wraps{
+        width: 95%;
+        border: 1px dashed #ECF0F1;
+        margin: auto;
+        margin-top: 10px;
+        border-radius: 5px;
+        padding-bottom: 5px;
+      }
+      .time{
+          background: #31A5FF;
+          padding: 5px 10px;
+          font-size: 14px;
+          display: inline-block;
+          color: #fff;
+          border-radius: 10px;
+          position: relative;
+          margin-bottom: 5px;
+      }
+      .recodeTitle{
+        display: block;
+        margin-top: 3px;
+      }
+      .name{
+          color: #000;
+          font-size: 14px;
+          /*font-weight: bold;*/
+          line-height: 1.6;
+      }
+      .main{
+          padding-left: 50px;
+          position: relative;
+          padding-bottom: 10px;
+      }
+      .main:after{
+          content: '';
+          position: absolute;
+          top: 0;
+          left: 30px;
+          width:2px;
+          background: #31A5FF;
+          height: 100%;
+      }
+      .main:before{
+          content: '';
+          position: absolute;
+          top: 5px;
+          left:23px;
+          width:15px;
+          background: #31A5FF;
+          height: 15px;
+          border-radius: 50%;
+      }
+      /*三角形*/
+      .Triangle{
+          position: absolute;
+          top: 5px;
+          left: -14px;
+          width: 0;
+          height: 0;
+          border-width: 8px;
+          border-style: solid;
+          border-color: transparent #31A5FF transparent transparent;
+          transform: rotate(360deg);
+      }
+      .recode-img{
+          display: inline-block;
+          width: 38px;
+          height: 46px;
+          background: url("../../icon/recode.png")  center no-repeat;
+          background-size: contain;
+          position: relative;
+          left: 12px;
+          top: 9px;
+      }
+      .state{
+        padding-left: 50px;
+        position: relative;
+      }
+      .stop{
+        position: absolute;
+        top: 6px;
+        left: 23px;
+        width: 15px;
+        height: 15px;
+        background: url("../../icon/stop.png")  center no-repeat;
+        background-size: contain;
+        z-index: 800;
+      }
+      .state:after{
+          content: '';
+          position: absolute;
+          top: -2px;
+          left: 30px;
+          width:2px;
+          background: #31A5FF;
+          height: 10px;
+        }
+        .recode-more{
+          padding: 20px;
+          text-align: center;
+        }
+        #recode_item{
+          padding-top: 50px;
+        }
+        /*tool*/
+        .tool_itme{
+            padding: 10px;
+        }
+        .tool_time{
+          display: flex;
+          justify-content: space-between;
+        }
+        .tool_time input{
+            border: 1px solid #ccc;
+            padding: 8px 10px;
+            border-radius: 3px;
+            width: 46%;
+            box-sizing: border-box;
+           -webkit-appearance: none;
+           text-align: center;
+        }
+        .tool_seacrh_export{
+            padding: 10px 0;
+        }
+        .tool_seacrh_export button{
+            padding: 10px 0;
+            color: #fff;
+            background: #009FE8;
+            width: 100px;
+            border-radius: 4px;
+            text-align: center;
+            cursor: pointer;
+        }
+        .tool_seacrh_export button{
+            margin-right: 20px;
+        }
+    </style>
+</head>
+<body>
+  <div class="date-wrap" id="date_wrap">
+
+  </div>
+  <div class="api_layout" id="recode_item">
+      <div class="tool_itme">
+          <div class="tool_time ">
+              <input type="text" class="start_time" readonly placeholder="开始时间">
+              <input type="text" class="end_time" readonly placeholder="结束时间">
+          </div>
+          <div class="tool_seacrh_export">
+            <button type="button" onclick="searchRecode()">查询</button>
+            <button type="button" onclick="exportRecode()">导出</button>
+          </div>
+      </div>
+      <div id="recode_content">
+
+      </div>
+  </div>
+  <div class="noText hide">
+    <img src="../../image/noText.png" alt="">
+  </div>
+  <a href="javascript:;" class="upload_file"></a>
+</body>
+</html>
+
+<script type="text/template" id="recodeTemplate">
+  {{~it:value}}
+       <div class="recode-wraps">
+           <span class="recode-img"></span>
+           <div class="recode-list">
+              {{ for (var t=0;t<value.length;t++) { }}
+                 <div class="main" onclick="openRecordDe('{{=value[t].recordParentId}}')">
+                     <p class="time">
+                         {{=value[t].createDate}}
+                         <span class="Triangle"></span>
+                         <span class="recodeTitle">{{=value[t].templateName}}</span>
+                     </p>
+                     <p class="name">{{=value[t].createName}}</p>
+                     <div class="name">
+                       {{?value[t].recordStatusInstanceList != null}}
+                         {{ for(var i= 0;i<value[t].recordStatusInstanceList.length;i++){ }}
+                           <div class="state-items">
+                             <p class="state-title" style="width:auto;display:{{=value[t].statusName == ""?'none':'inline-block'}}">{{=value[t].recordStatusInstanceList[i].statusName}}:</p>
+                               {{ for(var j= 0;j<value[t].recordStatusInstanceList[i].recordStatusInstanceItemList.length;j++){ }}
+                                 {{?value[t].recordStatusInstanceList[i].recordStatusInstanceItemList.length == 1}}
+                                   <span>{{=value[t].recordStatusInstanceList[i].recordStatusInstanceItemList[j].statusContent}}</span>
+                                 {{??}}
+                                   <span>{{=value[t].recordStatusInstanceList[i].recordStatusInstanceItemList[j].statusContent}},</span>
+                                 {{?}}
+                               {{ } }}
+                            </div>
+                          {{ } }}
+                        {{??}}
+                          <div class="state-items">
+                            <p class="state-title" style="width:auto;display:{{=value[t].statusName == ""?'none':'inline-block'}}">{{=value[t].statusName}}:</p>
+                            <span>{{=value[t].statusContent}}</span>
+                           </div>
+                        {{?}}
+                     </div>
+                 </div>
+                 {{?t == value.length-1}}
+                 {{?value[value.length-1].continueStatus == false}}
+                     <div class="state">
+                         <p class="time">
+                             结束:{{=value[t].createDate}}
+                             <span class="Triangle" style="top:6px;"></span>
+                         </p>
+                         <i class="stop"></i>
+                     </div>
+                   {{??}}
+                     <div class="state wait">
+                         <p class="time" style="background:#F7A329">
+                             等待处理......
+                             <span class="Triangle" style="top:6px;border-color: transparent #F7A329 transparent transparent;"></span>
+                         </p>
+                         <i class="stop" style="background: url('../../icon/Continue.png')  center no-repeat;background-size: contain;"></i>
+                     </div>
+                   {{?}}
+                 {{?}}
+             {{ } }}
+           </div>
+       </div>
+  {{~}}
+</script>
+<script type="text/template" id="TemplateName">
+  <ul class="date-lists flex-start">
+    {{~it:value:index}}
+        {{?index == 0}}
+          <li class="active" onclick="randomSwitchBtn(this,'{{=value.parentId}}','{{=value.templateId}}')">{{=value.templateName}}</li>
+        {{??}}
+          <li onclick="randomSwitchBtn(this,'{{=value.parentId}}','{{=value.templateId}}')">{{=value.templateName}}</li>
+        {{?}}
+    {{~}}
+  </ul>
+</script>
+
+<script type="text/javascript" src="../../script/api.js"></script>
+<script type="text/javascript" src="../../script/doT.min.js"></script>
+<script type="text/javascript" src="../../script/zepto.js"></script>
+<script src="../../script/popoPicker.js"></script>
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+    var pageId = "",departmentID="",name="",uuid="",isLoadding = false;
+    var skip = 1,parentId = "",templateId="";
+    var startTime = '',endTime = '',scrolltobottomFlat = true;
+    apiready = function () {
+      pageId = api.pageParam.id
+      departmentID= api.pageParam.departmentID
+      name= api.pageParam.name
+      uuid= api.pageParam.uuid
+      TemplateName(api.pageParam.id)
+      // 上拉加载
+      api.addEventListener({
+        name : 'scrolltobottom',
+        extra : {
+          threshold : 0 //设置距离底部多少距离时触发,默认值为0,数字类型
+        }
+      }, function(ret, err) {
+        if (!isLoadding && scrolltobottomFlat) {
+          isLoadding = true;
+          recodeList(parentId)
+        }
+      });
+    }
+    // TemplateName Nav
+    var num=0;
+    function TemplateName(pageID) {
+      $http.fnReuestDataNologing(UrlRouter.selectRecordByGetPageId+pageID,'','get','',function (ret, err) {
+          if (ret.code == '200' && ret.data != "") {
+              $apis.html(date_wrap,'#TemplateName',ret.data);
+              parentId = ret.data[0].parentId;
+              templateId = ret.data[0].templateId
+              recodeList(ret.data[0].parentId,false)
+          }
+      })
+    }
+    function recodeList(ParentId) {
+      api.showProgress({
+          title: '努力加载中...',
+          text: '先喝杯茶...',
+          modal: true
+      });
+      var parm= {
+        pageId:pageId,
+        pageRecordParentId: ParentId,
+        startTime: startTime,
+        endTime: endTime,
+        pageNumber:skip,
+        pageSize: 10
+      }
+      $http.fnReuestDataNologing(UrlRouter.getPageRecordInstanceList,'','get',parm,function (ret, err) {
+          isLoadding = false;
+          api.hideProgress();
+          if (ret.data.length == 0 && skip == 1) {
+              $api.removeCls($api.dom('.noText'), 'hide');
+              $apis.html(recode_content,'#recodeTemplate','');
+              isLoadding = true;
+              return false;
+          }else {
+              $api.addCls($api.dom('.noText'), 'hide');
+          }
+          if (ret) {
+            if (ret.data.length > 0) {
+              skip += 1;
+              $apis.append(recode_content,'#recodeTemplate',ret.data);
+              // $api.addCls($api.dom('.noText'), 'hide');
+              // $api.removeCls($api.dom('.noText'), 'hide');
+            } else {
+               isLoadding =true;
+                api.toast({
+                    msg: '没有更多数据',
+                    duration: 2000,
+                    location: 'bottom'
+                });
+            }
+          }else {
+            api.toast({
+                msg: '加载超时,请检查网络',
+                duration: 2000,
+                location: 'bottom'
+            });
+          }
+      })
+    }
+    // 模版名称
+    function randomSwitchBtn( tag ,ParentId,temId) {
+        if( tag == $api.dom('.date-lists li.active') )return;
+        var eFootLis = $api.domAll('.date-lists li');
+        skip = 1;
+        index = 0;
+        $apis.html(recode_content,'#recodeTemplate','');
+        for (var i = 0,len = eFootLis.length; i < len; i++) {
+            if( tag == eFootLis[i] ){
+                index = i;
+            }else{
+                $api.removeCls(eFootLis[i], 'active');
+            }
+        }
+        $api.addCls( eFootLis[index], 'active');
+        templateId = temId
+        startTime = ''
+        endTime = ''
+        $('.start_time').val('')
+        $('.end_time').val('')
+        parentId = ParentId
+        recodeList(ParentId)
+    }
+    // 记录详情
+    function openRecordDe(id) {
+      $event.openTabLayout('recodeDetails','recodeDetails','记录详情',{recordParentId:id});
+    }
+    new popoDateT('.start_time',{
+        container:'.tool_time',
+        background:'light',
+        save:function (data) {
+            startTime = data
+        }
+    });
+    new popoDateT('.end_time',{
+        container:'.tool_time',
+        background:'light',
+        save:function (data) {
+            endTime = data
+        }
+    });
+    // 查询
+    function searchRecode() {
+      scrolltobottomFlat = false
+      var parm= {
+        pageId:pageId,
+        pageRecordParentId: parentId,
+        startTime: startTime,
+        endTime: endTime,
+        pageNumber:0,
+        pageSize: 0
+      }
+      $http.requestShowProgress(UrlRouter.getPageRecordInstanceList,'get',parm)
+      .then(ret=>{
+        if (ret.data.length > 0) {
+          $api.addCls($api.dom('.noText'), 'hide');
+          $apis.html(recode_content,'#recodeTemplate',ret.data);
+        } else {
+            api.toast({
+                msg: '没有更多数据',
+                duration: 2000,
+                location: 'bottom'
+            });
+            $apis.html(recode_content,'#recodeTemplate',"");
+            $api.removeCls($api.dom('.noText'), 'hide');
+        }
+      }).catch(err=>{
+        api.toast({
+            msg: '加载超时,请检查网络',
+            duration: 2000,
+            location: 'bottom'
+        });
+      })
+    }
+    // 导出
+    function exportRecode(that) {
+      if (startTime == "" && startTime =="") {
+        api.toast({
+            msg: '请选择时间',
+            duration: 2000,
+            location: 'top'
+        });
+        return false
+      }
+      var uploadFileElm=$('.upload_file')
+      var url = UrlRouter.getRecordInstanceDetailListMobileExcel+"?startTime="+ startTime +"&endTime="+ endTime
+      +"&templateId="+templateId
+      $http.requestShowProgress(url,'get','')
+      .then(ret=>{
+        if (ret.code === '200') {
+          var fileUrl= ret.data
+          api.confirm({
+              title: '提示',
+              msg: '是否导出记录',
+              buttons: ['确定', '取消']
+          }, function(ret, err) {
+              var index = ret.buttonIndex;
+              if (index === 1) {
+                uploadFileElm.attr('href',fileUrl)
+                uploadFileElm.attr('download',fileUrl)
+                uploadFileElm.click()
+              }
+          });
+        }
+      }).catch(err=>{
+        api.toast({
+            msg: '下载失败',
+            duration: 2000,
+            location: 'top'
+        });
+      })
+    }
+</script>

+ 616 - 0
widget/html/cloudDisk/cloudDiskDe.html

@@ -0,0 +1,616 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0" />
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title>云盘</title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css" />
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style>
+        /*搜索*/
+        .api_search{
+            padding: 13px;
+            display: flex;
+            justify-content: space-between;
+            align-items: center;
+            flex-wrap: nowrap;
+        }
+        .search_box{
+            flex: 6;
+            height: 34px;
+            line-height: 34px;
+            background:rgba(255,255,255,1);
+            box-shadow:0 0 5px 0 rgba(0,0,0,0.25);
+            border-radius:5px;
+            font-size: 14px;
+            color: #929292;
+            padding-left: 30px;
+            position: relative;
+        }
+        .search_icon{
+            display: block;
+            position: absolute;
+            top: 7px;
+            left: 7px;
+            width: 20px;
+            height: 20px;
+            background: url("../../icon/searc1.png") center no-repeat;
+            background-size: cover;
+        }
+        .sort_box{
+            width: 25px;
+            height: 25px;
+            margin-left: 13px;
+            background: url("../../icon/sort.png") center no-repeat;
+            background-size: cover;
+        }
+        /*文件列表*/
+        .cloud_lists{
+            padding-top: 10px;
+            overflow: hidden;
+        }
+        .cloud_list li{
+            padding: 10px 14px;
+            display: flex;
+            justify-content: flex-start;
+            align-items: center;
+            flex-wrap: nowrap;
+            color: #2C3E50;
+            position: relative;
+        }
+        .img_text{
+          display: flex;
+          justify-content: flex-start;
+          align-items: center;
+          flex-wrap: nowrap;
+          width: 86%;
+        }
+        .file_name_sizes{
+          width: 82%;
+        }
+        .cloud_list li img{
+            width: 40px;
+            height: 40px;
+            margin-right: 13px;
+        }
+        .file_name{
+            font-size: 14px;
+            margin-bottom: 3px;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            white-space: nowrap;
+        }
+        .file_size_time{
+            color: #9C9FA5;
+            font-size: 13px;
+        }
+        .file_tool{
+            width: 25px;
+            height: 25px;
+            background: url("../../icon/tool.png") center no-repeat;
+            background-size: cover;
+            position: absolute;
+            top: 17.5px;
+            right: 14px;
+        }
+        /*悬浮菜单*/
+        .menu{
+            position: fixed;
+            bottom: 13px;
+            right: 13px;
+            z-index: 9999;
+        }
+        .tool_boxs{
+            background:rgba(255,255,255,1);
+            box-shadow:0 0 10px 5px rgba(0,0,0,0.15);
+            border-radius:27px;
+            color: #2C3E50;
+            font-size: 12px;
+            text-align: center;
+            padding: 3px;
+            height: 51px;
+            box-sizing: border-box;
+            transition: .5s;
+            overflow: hidden;
+        }
+        .tool_box_first{
+            opacity: 0;
+            height: 0;
+            position: relative;
+            bottom: -140px;
+            margin-bottom: 0;
+            transition: .5s;
+        }
+        .tool_box_two{
+            opacity: 0;
+            height: 0;
+            position: relative;
+            bottom: -70px;
+            margin-bottom: 0;
+            transition: .5s;
+        }
+        .tool_box p{
+            width: 45px;
+            height: 45px;
+        }
+        .plus{
+            background: url("../../icon/tool1.png") center no-repeat;
+            background-size: cover;
+            position: relative;
+            z-index:2000;
+            cursor: pointer;
+        }
+        .file_x{
+            background: url("../../icon/file_x.png") center no-repeat;
+            background-size: cover;
+            margin-bottom: 3px;
+        }
+        .file_j{
+            background: url("../../icon/file_s.png") center no-repeat;
+            background-size: cover;
+            margin-bottom: 3px;
+        }
+        /*上传按钮原生H5样式修改*/
+        .rt_rt_1ec4mqe238o31nmpp8e12r91n1{
+          width: 45px;
+          height: 45px;
+        }
+        .webuploader-element-invisible{
+          opacity: 0;
+          width: 45px;
+          height: 45px;
+        }
+    </style>
+</head>
+<body>
+    <div class="api_layout">
+    <!-- 搜索-->
+        <div class="api_search">
+<!--            搜索框-->
+            <div class="search_box" onclick="searchFile()">
+                搜索
+                <i class="search_icon"></i>
+            </div>
+<!--            排序-->
+            <div class="sort_box" onclick="openSortTool()"></div>
+        </div>
+    <!-- 文件列表-->
+        <div class="cloud_lists" id="cloud_lists"></div>
+    </div>
+    <!--悬浮菜单-->
+    <div class="menu">
+        <div class="tool_boxs">
+            <div class="tool_box tool_box_first tool_box_c" onclick="addFolder()">
+                <p class="file_x"></p>
+                文件夹
+            </div>
+            <div class="tool_box tool_box_two tool_box_c" id="picker">
+                <p class="file_j"></p>
+                文件
+            </div>
+            <div class="tool_box">
+                <p class="plus"></p>
+            </div>
+        </div>
+    </div>
+    <!-- 无内容提示 -->
+    <div class="noText hide">
+      <img src="../../image/noText.png" alt="">
+    </div>
+    <!-- 下载 -->
+    <a href="javascript:;" id="upload_file"></a>
+</body>
+
+</html>
+
+<script type="text/template" id="templateMyCloud">
+    {{~it:value:index}}
+      <ul class="cloud_list">
+        {{? value.filetype === 0}}
+          <li>
+            <div class="img_text" tapmode onclick="openFolderContent('{{=value.filename}}','{{=value.id}}')">
+              <img src="../../icon/file.png" alt="">
+              <div class="file_name_sizes">
+                  <p class="file_name">{{=value.filename}}</p>
+                  <p class="file_size_time">{{=value.createtime}}</p>
+              </div>
+            </div>
+            <i class="file_tool" onclick="openTool('{{=value.id}}','{{=value.filename}}','{{=value.filetype}}')"></i>
+          </li>
+        {{??}}
+          <li>
+            <div class="img_text">
+              <img src="{{=value.fileicon}}" alt="">
+              <div class="file_name_sizes">
+                  <p class="file_name">{{=value.filename}}</p>
+                  <p class="file_size_time">{{=value.createtime}} {{=value.filesizename}}</p>
+              </div>
+            </div>
+            <i class="file_tool" onclick="openTool('{{=value.id}}','{{=value.filename}}')"></i>
+          </li>
+        {{?}}
+      </ul>
+    {{~}}
+</script>
+<script type="text/javascript" src="../../script/api.js"></script>
+<script type="text/javascript" src="../../script/doT.min.js"></script>
+<script type="text/javascript" src="../../script/cloudUpload/jquery-3.4.1.min.js"></script>
+<script type="text/javascript" src="../../script/cloudUpload/webuploader.min.js"></script>
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../script/cloudUpload/cloudUpload.js"></script>
+<script type="text/javascript">
+    var skip = 1,isLoadding = false,userToken='',
+    orderfield = '', ordertype='',isHtml = false
+    pid = null;
+    apiready = function() {
+        userToken = api.pageParam.token
+        pid = api.pageParam.id
+        register(pid,userToken);
+      	init();
+        findList()
+        api.addEventListener({
+  				name : 'scrolltobottom',
+  				extra : {
+  					threshold : 0 //设置距离底部多少距离时触发,默认值为0,数字类型
+  				}
+  			}, function(ret, err) {
+  				if (!isLoadding) {
+  					isLoadding = true;
+            isHtml = false;
+  					findList();
+  				}
+  			})
+    }
+    // list
+    function findList() {
+      var params = {
+        pid,
+        orderfield,
+        ordertype,
+        page: skip,
+        limit: 20,
+        token: userToken
+      }
+      $http.requestData(UrlRouter.findList,'post',params)
+      .then(ret=>{
+        if (ret.rows.length == 0 && skip == 1) {
+          $api.removeCls($api.dom('.noText'), 'hide');
+            return false;
+        }else {
+          $api.addCls($api.dom('.noText'), 'hide');
+        }
+        if (ret.rows.length > 0) {
+          if (isHtml) {
+            skip += 1;
+            $apis.html(cloud_lists,'#templateMyCloud',ret.rows);
+          }else {
+            skip += 1;
+            $apis.append(cloud_lists,'#templateMyCloud',ret.rows);
+          }
+        } else {
+            isLoadding = true;
+            api.toast({
+                msg: '没有更多数据',
+                duration: 2000,
+                location: 'bottom'
+            });
+        }
+      })
+      .catch(err=>{
+        api.toast({
+            msg: '网络错误,请检查网络!',
+            duration: 2000,
+            location: 'top'
+        })
+      })
+    }
+    // 搜索
+    function searchFile() {
+        $event.openWin('searchFile_win','searchFile_win',{token:userToken},'')
+    }
+    // 排序工具栏
+    function openSortTool() {
+      api.actionSheet({
+          title: '排序',
+          cancelTitle: '取消',
+          buttons: ['按时间顺序', '按名称排序']
+      }, function(ret, err) {
+          if (ret.buttonIndex === 1) {
+            orderfield = 'createtime',
+            ordertype = ''
+          }else {
+            ordertype = 'descending'
+            orderfield = ''
+          }
+          skip = 1
+          isHtml = true
+          findList()
+      });
+    }
+    // 下载删除工具函数
+    function openTool(id,name,type) {
+      var Toolname = type == 0 ? ['重命名']:['下载','重命名']
+      api.actionSheet({
+          title: '操作',
+          cancelTitle: '取消',
+          destructiveTitle: '删除',
+          buttons: Toolname
+      }, function(ret, err) {
+          var index = ret.buttonIndex;
+          if (index === 1) {
+            api.confirm({
+                title: '确定删除文件?',
+                msg: '',
+                buttons: ['确定', '取消']
+            }, function(ret, err) {
+                if (ret.buttonIndex === 1) {
+                  deleteFolder(id,name)
+                }
+            })
+          }else if (index === 2) {
+            if (type != 0) {
+              mergeFilesNew(id,name)
+            }else {
+              renameFolder(id,name,type)
+            }
+          }
+          else if (index === 3) {
+            if (type != 0) {
+              renameFolder(id,name,type)
+            }
+          }
+      });
+    }
+    // 添加文件夹
+    function addFolder() {
+      api.prompt({
+          title: '新建文件夹',
+          buttons: ['确定', '取消'],
+          text: '请输入文件夹名称!'
+      }, function(ret, err) {
+          if (ret.buttonIndex === 1) {
+            newFolder(ret.text)
+          }
+
+      });
+    }
+    // 添加文件以及文件夹的js动画
+    $('body').on('click','.plus',function () {
+        if ($('.tool_boxs').height() === 45){
+            $('.tool_box_c').css({
+                bottom:0,
+                height: 65,
+                marginBottom:5,
+                opacity:1
+            })
+            $('.tool_boxs').css({
+                height:191
+            })
+        }else {
+            $('.tool_box_c').css({
+                bottom:-70,
+                height: 0,
+                marginBottom:0,
+                opacity:0
+            })
+            $('.tool_boxs').css({
+                height:51
+            })
+        }
+
+    })
+    // open文件夹
+    function openFolderContent(name,id) {
+        $event.openTabLayout('cloudDiskDe'+Math.random(),'cloudDiskDe',name,{id,token:userToken});
+    }
+    // 删除文件或文件夹
+    function deleteFolder(id,name) {
+      var params = {
+        ids: [{id,name}],
+        token:userToken
+      }
+      $http.requestShowProgress(UrlRouter.delete,'post',params)
+      .then(ret=>{
+        if (ret.code === 0) {
+          api.toast({
+              msg: '删除成功',
+              duration: 2000,
+              location: 'top'
+          })
+          skip = 1
+          isHtml = true
+          findList()
+        }else {
+          api.toast({
+              msg: '删除失败',
+              duration: 2000,
+              location: 'top'
+          })
+        }
+      })
+      .catch(err=>{
+        api.toast({
+            msg: '网络错误,请检查网络!',
+            duration: 2000,
+            location: 'top'
+        })
+      })
+    }
+    // 新建文件夹
+    function newFolder(name) {
+      var params = {
+        pid,
+        name,
+        token:userToken
+      }
+      $http.requestShowProgress(UrlRouter.addFolder,'post',params)
+      .then(ret=>{
+        if (ret.code === 0) {
+          api.toast({
+              msg: '添加成功',
+              duration: 2000,
+              location: 'top'
+          })
+          skip = 1
+          isHtml = true
+          findList()
+        }else {
+          api.toast({
+              msg: '添加失败',
+              duration: 2000,
+              location: 'top'
+          })
+        }
+      })
+      .catch(err=>{
+        api.toast({
+            msg: '网络错误,请检查网络!',
+            duration: 2000,
+            location: 'top'
+        })
+      })
+    }
+    // 合并切块,上传文件
+    function register(ids,token){
+    	//document->hook下面有介绍
+    	WebUploader.Uploader.register({
+    		'name': 'webUploaderHookCommand',
+        	"before-send-file":"beforeSendFile",
+        	"before-send":"beforeSend",
+        	"after-send-file":"afterSendFile"
+        },{
+          beforeSendFile:function(file) {
+              // 创建一个deffered,用于通知是否完成操作
+          var deferred = WebUploader.Deferred();
+              //js-spark-md5计算md5
+              //内置计算md5【慢,而且jpg计算不对】
+    			getFileMd5(file,deferred,token);
+    			uploader.options.formData.uuid = uuid;
+              	uploader.options.formData.pid = ids;
+          			uploader.options.formData.token = userToken;
+
+          			//问题一:同时选择两个文件,大在前,小在后,则md5和filename会窜
+          			//问题二:主要如果<chunkSize,则不分块,不会有chunk和chunks两参数
+          			//问题三:内置参数chunk/chunks
+            	if(file.size<=chunkSize){
+            		uploader.options.formData.chunk=0;
+            		uploader.options.formData.chunks=1;
+            	}
+
+                return deferred.promise();// 通知完成操作
+            },
+            beforeSend:function(block) {
+            },
+            afterSendFile:function(file) {//合并切块
+            	var url=baseurl+"disk/fileupload/mergeChunk";
+            	var args={
+            		"albumid":'',
+            		"pid":ids,
+            		"relativepath":"",
+            		"uuid":uuid,
+            		"fileid":file.id,
+            		"filename":file.name,
+            		"filemd5":md5,
+            		"totalSize":file.size,
+            		"token": token
+            	};
+            $.post(url,args,function(data){
+            		if(data.code==0){
+                  api.toast({
+                      msg: '上传成功',
+                      duration: 2000,
+                      location: 'top'
+                  });
+                  skip = 1
+                  isHtml = true
+                  findList()
+                  api.hideProgress();
+
+            		}else{
+                  api.toast({
+                      msg: '上传失败',
+                      duration: 2000,
+                      location: 'top'
+                  });
+                  api.hideProgress();
+            		}
+            	});
+            }
+        });
+    }
+    // 下载文件 图片
+    function mergeFilesNew(id) {
+          var uploadFileElm= $('#upload_file')
+          api.confirm({
+              title: '提示',
+              msg: '是否下载文件',
+              buttons: ['确定', '取消']
+          }, function(ret, err) {
+              var index = ret.buttonIndex;
+              if (index === 1) {
+                  uploadFileElm.attr('href',`${UrlRouter.download}fileid=${id}&token=${userToken}`)
+                  uploadFileElm.attr('download',`${UrlRouter.download}fileid=${id}&token=${userToken}`)
+                  document.getElementById("upload_file").click();
+              }
+          });
+        }
+    // 重命名
+    function renameFolder(id,name,type) {
+      var filename = name
+      fileType = name.substring(name.lastIndexOf('.'))
+      if (type != 0) {
+        filename = name.substring(0,name.lastIndexOf('.'))
+      }
+      api.prompt({
+          title: '修改文件名称',
+          buttons: ['确定', '取消'],
+          text: filename
+      }, function(ret, err) {
+          var text = ret.text;
+          if (ret.buttonIndex === 1) {
+            rename(id,ret.text,fileType)
+          }
+
+      });
+    }
+    function rename(id,filename,fileType) {
+      var type = fileType
+      if (fileType.indexOf('.') != 0 ) {
+        type = ''
+      }
+      var params = {
+        id,
+        filename:filename+type,
+        token:userToken
+      }
+      $http.requestShowProgress(UrlRouter.rename,'post',params)
+      .then(ret=>{
+        if (ret.code === 0) {
+          api.toast({
+              msg: '修改成功',
+              duration: 2000,
+              location: 'top'
+          })
+          skip = 1
+          isHtml = true
+          findList()
+        }else {
+          api.toast({
+              msg: '修改失败',
+              duration: 2000,
+              location: 'top'
+          })
+        }
+      })
+      .catch(err=>{
+        api.toast({
+            msg: '网络错误,请检查网络!',
+            duration: 2000,
+            location: 'top'
+        })
+      })
+    }
+
+</script>

+ 631 - 0
widget/html/cloudDisk/cloudDiskList.html

@@ -0,0 +1,631 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0" />
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title>云盘</title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css" />
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style>
+        /*搜索*/
+        .api_search{
+            padding: 13px;
+            display: flex;
+            justify-content: space-between;
+            align-items: center;
+            flex-wrap: nowrap;
+        }
+        .search_box{
+            flex: 6;
+            height: 34px;
+            line-height: 34px;
+            background:rgba(255,255,255,1);
+            box-shadow:0 0 5px 0 rgba(0,0,0,0.25);
+            border-radius:5px;
+            font-size: 14px;
+            color: #929292;
+            padding-left: 30px;
+            position: relative;
+        }
+        .search_icon{
+            display: block;
+            position: absolute;
+            top: 7px;
+            left: 7px;
+            width: 20px;
+            height: 20px;
+            background: url("../../icon/searc1.png") center no-repeat;
+            background-size: cover;
+        }
+        .sort_box{
+            width: 25px;
+            height: 25px;
+            margin-left: 13px;
+            background: url("../../icon/sort.png") center no-repeat;
+            background-size: cover;
+        }
+        /*文件列表*/
+        .cloud_lists{
+            padding-top: 10px;
+            overflow: hidden;
+        }
+        .cloud_list li{
+            padding: 10px 14px;
+            display: flex;
+            justify-content: flex-start;
+            align-items: center;
+            flex-wrap: nowrap;
+            color: #2C3E50;
+            position: relative;
+        }
+        .img_text{
+          display: flex;
+          justify-content: flex-start;
+          align-items: center;
+          flex-wrap: nowrap;
+          width: 86%;
+        }
+        .file_name_sizes{
+          width: 82%;
+        }
+        .cloud_list li img{
+            width: 40px;
+            height: 40px;
+            margin-right: 13px;
+        }
+        .file_name{
+            font-size: 14px;
+            margin-bottom: 3px;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            white-space: nowrap;
+        }
+        .file_size_time{
+            color: #9C9FA5;
+            font-size: 13px;
+        }
+        .file_tool{
+            width: 25px;
+            height: 25px;
+            background: url("../../icon/tool.png") center no-repeat;
+            background-size: cover;
+            position: absolute;
+            top: 17.5px;
+            right: 14px;
+        }
+        /*悬浮菜单*/
+        .menu{
+            position: fixed;
+            bottom: 13px;
+            right: 13px;
+            z-index: 9999;
+        }
+        .tool_boxs{
+            background:rgba(255,255,255,1);
+            box-shadow:0 0 10px 5px rgba(0,0,0,0.15);
+            border-radius:27px;
+            color: #2C3E50;
+            font-size: 12px;
+            text-align: center;
+            padding: 3px;
+            height: 51px;
+            box-sizing: border-box;
+            transition: .5s;
+            overflow: hidden;
+        }
+        .tool_box_first{
+            opacity: 0;
+            height: 0;
+            position: relative;
+            bottom: -140px;
+            margin-bottom: 0;
+            transition: .5s;
+        }
+        .tool_box_two{
+            opacity: 0;
+            height: 0;
+            position: relative;
+            bottom: -70px;
+            margin-bottom: 0;
+            transition: .5s;
+        }
+        .tool_box p{
+            width: 45px;
+            height: 45px;
+        }
+        .plus{
+            background: url("../../icon/tool1.png") center no-repeat;
+            background-size: cover;
+            position: relative;
+            z-index:2000;
+            cursor: pointer;
+        }
+        .file_x{
+            background: url("../../icon/file_x.png") center no-repeat;
+            background-size: cover;
+            margin-bottom: 3px;
+        }
+        .file_j{
+            background: url("../../icon/file_s.png") center no-repeat;
+            background-size: cover;
+            margin-bottom: 3px;
+        }
+         /*上传按钮原生H5样式修改*/
+         .rt_rt_1ec4mqe238o31nmpp8e12r91n1{
+           width: 45px;
+           height: 45px;
+         }
+         .webuploader-element-invisible{
+           opacity: 0;
+           width: 45px;
+           height: 45px;
+         }
+    </style>
+</head>
+<body>
+    <div class="api_layout">
+    <!-- 搜索-->
+        <div class="api_search">
+<!--            搜索框-->
+            <div class="search_box" onclick="searchFile()">
+                搜索
+                <i class="search_icon"></i>
+            </div>
+<!--            排序-->
+            <div class="sort_box" onclick="openSortTool()"></div>
+        </div>
+    <!-- 文件列表-->
+        <div class="cloud_lists" id="cloud_lists"></div>
+    </div>
+    <!--悬浮菜单-->
+    <div class="menu">
+        <div class="tool_boxs">
+            <div class="tool_box tool_box_first tool_box_c" onclick="addFolder()">
+                <p class="file_x"></p>
+                文件夹
+            </div>
+            <div class="tool_box tool_box_two tool_box_c" id="picker">
+                <p class="file_j"></p>
+                文件
+            </div>
+            <div class="tool_box">
+                <p class="plus"></p>
+            </div>
+        </div>
+    </div>
+    <!-- 无内容提示 -->
+    <div class="noText hide">
+      <img src="../../image/noText.png" alt="">
+    </div>
+    <!-- 下载 -->
+    <a href="javascript:;" id="upload_file"></a>
+</body>
+
+</html>
+
+<script type="text/template" id="templateMyCloud">
+    {{~it:value:index}}
+      <ul class="cloud_list">
+        {{? value.filetype === 0}}
+          <li>
+            <div class="img_text" tapmode onclick="openFolderContent('{{=value.filename}}','{{=value.id}}')">
+              <img src="../../icon/file.png" alt="">
+              <div class="file_name_sizes">
+                  <p class="file_name">{{=value.filename}}</p>
+                  <p class="file_size_time">{{=value.createtime}}</p>
+              </div>
+            </div>
+            <i class="file_tool" onclick="openTool('{{=value.id}}','{{=value.filename}}','{{=value.filetype}}')"></i>
+          </li>
+        {{??}}
+          <li>
+            <div class="img_text">
+              <img src="{{=value.fileicon}}" alt="">
+              <div class="file_name_sizes">
+                  <p class="file_name">{{=value.filename}}</p>
+                  <p class="file_size_time">{{=value.createtime}} {{=value.filesizename}}</p>
+              </div>
+            </div>
+            <i class="file_tool" onclick="openTool('{{=value.id}}','{{=value.filename}}','{{=value.filetype}}')"></i>
+          </li>
+        {{?}}
+      </ul>
+    {{~}}
+</script>
+<script type="text/javascript" src="../../script/api.js"></script>
+<script type="text/javascript" src="../../script/doT.min.js"></script>
+<!-- <script type="text/javascript" src="../../script/zepto.js"></script> -->
+<script type="text/javascript" src="../../script/cloudUpload/jquery-3.4.1.min.js"></script>
+<script type="text/javascript" src="../../script/cloudUpload/webuploader.min.js"></script>
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../script/cloudUpload/cloudUpload.js"></script>
+<script type="text/javascript">
+    var skip = 1,isLoadding = false,userToken='',
+    orderfield = '', ordertype='',isHtml = false
+    id = 0, UIActionProgress = null;
+    apiready = function() {
+        userToken = api.pageParam.cloudtoken
+        // 注册上传
+      	register(id,userToken);
+        // 初始化上传
+      	init();
+        // 进度条
+        UIActionProgress = api.require('UIActionProgress');
+        // 文件列表
+        findList(api.pageParam.cloudtoken)
+        api.addEventListener({
+  				name : 'scrolltobottom',
+  				extra : {
+  					threshold : 0 //设置距离底部多少距离时触发,默认值为0,数字类型
+  				}
+  			}, function(ret, err) {
+  				if (!isLoadding) {
+  					isLoadding = true;
+            isHtml = false;
+  					findList(api.pageParam.cloudtoken);
+  				}
+  			})
+    }
+    // list
+    function findList() {
+      var params = {
+        pid: 0,
+        orderfield,
+        ordertype,
+        page: skip,
+        limit: 20,
+        token: userToken
+      }
+      $http.requestData(UrlRouter.findList,'post',params)
+      .then(ret=>{
+
+        if (ret.rows.length == 0 && skip == 1) {
+          $api.removeCls($api.dom('.noText'), 'hide');
+            return false;
+        }else {
+          $api.addCls($api.dom('.noText'), 'hide');
+        }
+        if (ret.rows.length > 0) {
+          if (isHtml) {
+            skip += 1;
+            $apis.html(cloud_lists,'#templateMyCloud',ret.rows);
+          }else {
+            skip += 1;
+            $apis.append(cloud_lists,'#templateMyCloud',ret.rows);
+          }
+        } else {
+            isLoadding = true;
+            api.toast({
+                msg: '没有更多数据',
+                duration: 2000,
+                location: 'bottom'
+            });
+        }
+      })
+      .catch(err=>{
+        api.toast({
+            msg: '网络错误,请检查网络!',
+            duration: 2000,
+            location: 'top'
+        })
+      })
+    }
+    // 搜索
+    function searchFile() {
+        $event.openWin('searchFile_win','searchFile_win',{token:userToken},'')
+    }
+    // 排序工具栏
+    function openSortTool() {
+      api.actionSheet({
+          title: '排序',
+          cancelTitle: '取消',
+          buttons: ['按时间顺序', '按名称排序']
+      }, function(ret, err) {
+          if (ret.buttonIndex === 1) {
+            orderfield = 'createtime',
+            ordertype = ''
+          }else {
+            ordertype = 'descending'
+            orderfield = ''
+          }
+          skip = 1
+          isHtml = true
+          findList()
+      });
+    }
+    // 下载删除分享工具函数
+    function openTool(id,name,type) {
+      var Toolname = type == 0 ? ['重命名']:['下载','重命名']
+      api.actionSheet({
+          title: '操作',
+          cancelTitle: '取消',
+          destructiveTitle: '删除',
+          buttons: Toolname
+      }, function(ret, err) {
+          var index = ret.buttonIndex;
+          if (index === 1) {
+            api.confirm({
+                title: '确定删除文件?',
+                msg: '',
+                buttons: ['确定', '取消']
+            }, function(ret, err) {
+                if (ret.buttonIndex === 1) {
+                  deleteFolder(id,name)
+                }
+            })
+          }else if (index === 2) {
+            if (type != 0) {
+              mergeFilesNew(id,name)
+            }else {
+              renameFolder(id,name,type)
+            }
+          }
+          else if (index === 3) {
+            if (type != 0) {
+              renameFolder(id,name,type)
+            }
+          }
+      });
+    }
+    // 添加文件夹
+    function addFolder() {
+      api.prompt({
+          title: '新建文件夹',
+          buttons: ['确定', '取消'],
+          text: '请输入文件夹名称!'
+      }, function(ret, err) {
+          var text = ret.text;
+          if (ret.buttonIndex === 1) {
+            newFolder(ret.text)
+          }
+
+      });
+    }
+    // 添加文件以及文件夹的js动画
+    $('body').on('click','.plus',function () {
+        if ($('.tool_boxs').height() === 45){
+            $('.tool_box_c').css({
+                bottom:0,
+                height: 65,
+                marginBottom:5,
+                opacity:1
+            })
+            $('.tool_boxs').css({
+                height:191
+            })
+        }else {
+            $('.tool_box_c').css({
+                bottom:-70,
+                height: 0,
+                marginBottom:0,
+                opacity:0
+            })
+            $('.tool_boxs').css({
+                height:51
+            })
+        }
+
+    })
+    // open文件夹
+    function openFolderContent(name,id) {
+        $event.openTabLayout('cloudDiskDe'+Math.random(),'cloudDiskDe',name,{id,token:userToken});
+    }
+    // 删除文件或文件夹
+    function deleteFolder(id,name) {
+      var params = {
+        ids: [{id,name}],
+        token:userToken
+      }
+      $http.requestShowProgress(UrlRouter.delete,'post',params)
+      .then(ret=>{
+        if (ret.code === 0) {
+          api.toast({
+              msg: '删除成功',
+              duration: 2000,
+              location: 'top'
+          })
+          skip = 1
+          isHtml = true
+          findList()
+        }else {
+          api.toast({
+              msg: '删除失败',
+              duration: 2000,
+              location: 'top'
+          })
+        }
+      })
+      .catch(err=>{
+        api.toast({
+            msg: '网络错误,请检查网络!',
+            duration: 2000,
+            location: 'top'
+        })
+      })
+    }
+    // 新建文件夹
+    function newFolder(name) {
+      var params = {
+        pid: 0,
+        name,
+        token:userToken
+      }
+      $http.requestShowProgress(UrlRouter.addFolder,'post',params)
+      .then(ret=>{
+        if (ret.code === 0) {
+          api.toast({
+              msg: '添加成功',
+              duration: 2000,
+              location: 'top'
+          })
+          skip = 1
+          isHtml = true
+          findList()
+        }else {
+          api.toast({
+              msg: '添加失败',
+              duration: 2000,
+              location: 'top'
+          })
+        }
+      })
+      .catch(err=>{
+        api.toast({
+            msg: '网络错误,请检查网络!',
+            duration: 2000,
+            location: 'top'
+        })
+      })
+    }
+
+    // 合并切块,上传文件
+    function register(ids,token){
+    	//document->hook下面有介绍
+    	WebUploader.Uploader.register({
+    		'name': 'webUploaderHookCommand',
+        	"before-send-file":"beforeSendFile",
+        	"before-send":"beforeSend",
+        	"after-send-file":"afterSendFile"
+        },{
+          beforeSendFile:function(file) {
+              // 创建一个deffered,用于通知是否完成操作
+          var deferred = WebUploader.Deferred();
+              //js-spark-md5计算md5
+              //内置计算md5【慢,而且jpg计算不对】
+    			getFileMd5(file,deferred,token);
+    			uploader.options.formData.uuid = uuid;
+              	uploader.options.formData.pid = ids;
+          			uploader.options.formData.token = userToken;
+
+          			//问题一:同时选择两个文件,大在前,小在后,则md5和filename会窜
+          			//问题二:主要如果<chunkSize,则不分块,不会有chunk和chunks两参数
+          			//问题三:内置参数chunk/chunks
+            	if(file.size<=chunkSize){
+            		uploader.options.formData.chunk=0;
+            		uploader.options.formData.chunks=1;
+            	}
+
+                return deferred.promise();// 通知完成操作
+            },
+            beforeSend:function(block) {
+            },
+            afterSendFile:function(file) {//合并切块
+            	var url=baseurl+"disk/fileupload/mergeChunk";
+            	var args={
+            		"albumid":'',
+            		"pid":ids,
+            		"relativepath":"",
+            		"uuid":uuid,
+            		"fileid":file.id,
+            		"filename":file.name,
+            		"filemd5":md5,
+            		"totalSize":file.size,
+            		"token": token
+            	};
+            $.post(url,args,function(data){
+            		if(data.code === 0){
+                  api.toast({
+                      msg: '上传成功',
+                      duration: 2000,
+                      location: 'top'
+                  });
+                  skip = 1
+                  isHtml = true
+                  findList()
+                  UIActionProgress.close();
+
+            		}else{
+                  api.toast({
+                      msg: '上传失败',
+                      duration: 2000,
+                      location: 'top'
+                  });
+                  UIActionProgress.close();
+            		}
+            	});
+            }
+        });
+    }
+    // 下载文件 图片
+    function mergeFilesNew(id) {
+      var uploadFileElm= $('#upload_file')
+      api.confirm({
+          title: '提示',
+          msg: '是否下载文件',
+          buttons: ['确定', '取消']
+      }, function(ret, err) {
+          var index = ret.buttonIndex;
+          if (index === 1) {
+              uploadFileElm.attr('href',`${UrlRouter.download}fileid=${id}&token=${userToken}`)
+              uploadFileElm.attr('download',`${UrlRouter.download}fileid=${id}&token=${userToken}`)
+              document.getElementById("upload_file").click();
+          }
+      });
+    }
+    // 重命名
+    // 文件夹
+    function renameFolder(id,name,type) {
+      var filename = name
+      fileType = name.substring(name.lastIndexOf('.'))
+      if (type != 0) {
+        filename = name.substring(0,name.lastIndexOf('.'))
+      }
+      api.prompt({
+          title: '修改文件名称',
+          buttons: ['确定', '取消'],
+          text: filename
+      }, function(ret, err) {
+          var text = ret.text;
+          if (ret.buttonIndex === 1) {
+            rename(id,ret.text,fileType)
+          }
+
+      });
+    }
+    function rename(id,filename,fileType) {
+      var type = fileType
+      if (fileType.indexOf('.') != 0 ) {
+        type = ''
+      }
+      var params = {
+        id,
+        filename:filename+type,
+        token:userToken
+      }
+      $http.requestShowProgress(UrlRouter.rename,'post',params)
+      .then(ret=>{
+        if (ret.code === 0) {
+          api.toast({
+              msg: '修改成功',
+              duration: 2000,
+              location: 'top'
+          })
+          skip = 1
+          isHtml = true
+          findList()
+        }else {
+          api.toast({
+              msg: '修改失败',
+              duration: 2000,
+              location: 'top'
+          })
+        }
+      })
+      .catch(err=>{
+        api.toast({
+            msg: '网络错误,请检查网络!',
+            duration: 2000,
+            location: 'top'
+        })
+      })
+    }
+    // function shareFile(){
+    //   var sharedModule = api.require('shareAction');
+    //   sharedModule.share({
+    //       text: '纯文本信息',
+    //       type: 'text'
+    //   });
+    // }
+</script>

+ 305 - 0
widget/html/cloudDisk/searchFile_frm.html

@@ -0,0 +1,305 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0" />
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title>云盘</title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css" />
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style>
+        /*title*/
+        .title{
+            padding: 10px;
+            position: relative;
+            font-size: 12px;
+            color: #8a8a8a;
+            display: flex;
+            justify-content:flex-start;
+            align-items: center;
+            overflow: hidden;
+        }
+        .title:after{
+            content: "";
+            position: absolute;
+            bottom: 0;
+            left: 10px;
+            width: 100%;
+            height: 1px;
+            background: #dbdbdb;
+        }
+        .title_icon{
+            width: 15px;
+            height: 15px;
+            background: url("../../icon/file_icon.png") center no-repeat;
+            background-size: cover;
+            margin-right: 5px;
+        }
+        /*文件列表*/
+        .cloud_list li{
+            padding: 10px 14px;
+            display: flex;
+            justify-content: flex-start;
+            align-items: center;
+            flex-wrap: nowrap;
+            color: #2C3E50;
+            position: relative;
+        }
+        .img_text{
+          display: flex;
+          justify-content: flex-start;
+          align-items: center;
+          flex-wrap: nowrap;
+          width: 86%;
+        }
+        .file_name_sizes{
+          width: 82%;
+        }
+        .cloud_list li img{
+            width: 40px;
+            height: 40px;
+            margin-right: 13px;
+        }
+        .file_name{
+            font-size: 14px;
+            margin-bottom: 3px;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            white-space: nowrap;
+        }
+        .file_size_time{
+            color: #9C9FA5;
+            font-size: 13px;
+        }
+        .file_tool{
+            width: 15px;
+            height: 15px;
+            background: url("../../image/more.png") center no-repeat;
+            background-size: cover;
+            position: absolute;
+            top: 27.5px;
+            right: 14px;
+        }
+        .file_tool1{
+          width: 25px;
+          height: 25px;
+          background: url("../../icon/tool.png") center no-repeat;
+          background-size: cover;
+          position: absolute;
+          top: 17.5px;
+          right: 14px;
+        }
+    </style>
+</head>
+<body>
+    <div class="api_layout">
+    <!-- 文件列表-->
+        <div class="cloud_lists" id="cloud_lists"></div>
+    </div>
+    <!-- 下载 -->
+    <a href="javascript:;" id="upload_file"></a>
+</body>
+</html>
+
+<script type="text/template" id="templateSearch">
+  <!-- title-->
+      <div class="title">
+          <i class="title_icon"></i>
+          文件/文件夹
+      </div>
+  <!-- 文件列表-->
+    {{~it:value:index}}
+      <ul class="cloud_list">
+        {{? value.filetype === '0'}}
+          <li>
+            <div class="img_text" onclick="openFolderContent('{{=value.filename}}','{{=value.id}}')">
+              <img src="../../icon/file.png" alt="">
+              <div class="file_name_sizes">
+                  <p class="file_name">{{=value.filename}}</p>
+                  <p class="file_size_time">{{=value.createtime}}</p>
+              </div>
+            </div>
+            <i class="file_tool" onclick="openTool('{{=value.id}}','{{=value.filename}}')"></i>
+          </li>
+        {{??}}
+          <li>
+            <div class="img_text">
+              <img src="{{=value.fileicon}}" alt="">
+              <div class="file_name_sizes">
+                  <p class="file_name">{{=value.filename}}</p>
+                  <p class="file_size_time">{{=value.createtime}} {{=value.filesizename}}</p>
+              </div>
+            </div>
+            <i class="file_tool1" onclick="openTool('{{=value.id}}','{{=value.filename}}','{{=value.filetype}}')"></i>
+          </li>
+        {{?}}
+      </ul>
+    {{~}}
+</script>
+<script type="text/javascript" src="../../script/api.js"></script>
+<script type="text/javascript" src="../../script/doT.min.js"></script>
+<script type="text/javascript" src="../../script/zepto.js"></script>
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+    var token ='',filenames= ''
+    apiready = function() {
+        token = api.pageParam.token
+    }
+    function searchFileList(filename) {
+      filenames = filename
+      var params = {
+        filename,
+        page: 1,
+        limit: 1000,
+        token
+      }
+      $http.requestShowProgress(UrlRouter.fileSearch,'post',params)
+      .then(ret=>{
+        if (ret.code === 0) {
+          $apis.html(cloud_lists,'#templateSearch',ret.rows);
+        }
+      })
+      .catch(err=>{})
+    }
+    // open文件夹
+    function openFolderContent(name,id) {
+        $event.openTabLayout('cloudDiskDe'+Math.random(),'cloudDiskDe',name,{id,token:token});
+    }
+    function openTool(id,name,type) {
+      var Toolname = type == '0' ? ['重命名']:['下载','重命名']
+      api.actionSheet({
+          title: '操作',
+          cancelTitle: '取消',
+          destructiveTitle: '删除',
+          buttons: Toolname
+      }, function(ret, err) {
+          var index = ret.buttonIndex;
+          if (index === 1) {
+            api.confirm({
+                title: '确定删除文件?',
+                msg: '',
+                buttons: ['确定', '取消']
+            }, function(ret, err) {
+                if (ret.buttonIndex === 1) {
+                  deleteFolder(id,name)
+                }
+            })
+          }else if (index === 2) {
+            if (type != 0) {
+              mergeFilesNew(id,name)
+            }else {
+              renameFolder(id,name,type)
+            }
+          }
+          else if (index === 3) {
+            if (type != 0) {
+              renameFolder(id,name,type)
+            }
+          }
+      });
+    }
+    // 删除文件或文件夹
+    function deleteFolder(id,name) {
+
+      var params = {
+        ids: [{id,name}],
+        token:token
+      }
+      $http.requestShowProgress(UrlRouter.delete,'post',params)
+      .then(ret=>{
+        if (ret.code === 0) {
+          api.toast({
+              msg: '删除成功',
+              duration: 2000,
+              location: 'top'
+          })
+          searchFileList(filenames)
+        }else {
+          api.toast({
+              msg: '删除失败',
+              duration: 2000,
+              location: 'top'
+          })
+        }
+      })
+      .catch(err=>{
+        api.toast({
+            msg: '网络错误,请检查网络!',
+            duration: 2000,
+            location: 'top'
+        })
+      })
+    }
+    // 下载文件 图片
+    function mergeFilesNew(id) {
+      var uploadFileElm= $('#upload_file')
+      api.confirm({
+          title: '提示',
+          msg: '是否下载文件',
+          buttons: ['确定', '取消']
+      }, function(ret, err) {
+          var index = ret.buttonIndex;
+          if (index === 1) {
+              uploadFileElm.attr('href',`${UrlRouter.download}fileid=${id}&token=${token}`)
+              uploadFileElm.attr('download',`${UrlRouter.download}fileid=${id}&token=${token}`)
+              uploadFileElm.click();
+          }
+      });
+    }
+    // 重命名
+    function renameFolder(id,name,type) {
+      var filename = name
+      fileType = name.substring(name.lastIndexOf('.'))
+      if (type != 0) {
+        filename = name.substring(0,name.lastIndexOf('.'))
+      }
+      api.prompt({
+          title: '修改文件名称',
+          buttons: ['确定', '取消'],
+          text: filename
+      }, function(ret, err) {
+          var text = ret.text;
+          if (ret.buttonIndex === 1) {
+            rename(id,ret.text,fileType)
+          }
+
+      });
+    }
+    function rename(id,filename,fileType) {
+      var type = fileType
+      if (fileType.indexOf('.') != 0 ) {
+        type = ''
+      }
+      var params = {
+        id,
+        filename:filename+type,
+        token,
+      }
+      $http.requestShowProgress(UrlRouter.rename,'post',params)
+      .then(ret=>{
+        if (ret.code === 0) {
+          api.toast({
+              msg: '修改成功',
+              duration: 2000,
+              location: 'top'
+          })
+          searchFileList(filenames)
+        }else {
+          api.toast({
+              msg: '修改失败',
+              duration: 2000,
+              location: 'top'
+          })
+        }
+      })
+      .catch(err=>{
+        api.toast({
+            msg: '网络错误,请检查网络!',
+            duration: 2000,
+            location: 'top'
+        })
+      })
+    }
+
+</script>

+ 169 - 0
widget/html/cloudDisk/searchFile_win.html

@@ -0,0 +1,169 @@
+<!doctype html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <meta name="format-detection"content="telephone=no">
+    <title>index</title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style media="screen">
+        body,html{
+            margin: 0;
+            background: #fff;
+        }
+        .aui-searchbar{
+            width: 86%;
+            height: 50px;
+            margin-left: 40px;
+            background-color: transparent;
+        }
+        .aui-searchbar .aui-searchbar-btn{
+            color: #fff;
+        }
+        .aui-searchbar-input{
+            background: #fff;
+        }
+        .aui-searchbar-input input{
+            color: #000;
+        }
+        #search-input::placeholder{
+            color: #ccc;
+            font-size: 14px;
+        }
+        .search_ico{
+            width: 16px;
+            height: 16px;
+            display: block;
+            position: absolute;
+            background: url("../../image/search.png") no-repeat;
+            background-size: cover;
+            top: 8px;
+            left: 17px;
+        }
+        .backBtn{
+            margin-left: 5px;
+        }
+        #search-input{
+            font-size: 14px;
+            height: 28px;
+        }
+        .aui-searchbar-input{
+            margin-right: 60px;
+        }
+        .search_btn{
+            position: absolute;
+            bottom: 9px;
+            right: 10px;
+            width: 54px;
+            height: 31px;
+            line-height: 31px;
+            -webkit-border-radius: 50px;
+            -moz-border-radius: 50px;
+            border-radius: 50px;
+            color: #000;
+            background: #fff;
+            font-size: 13px;
+        }
+    </style>
+</head>
+<body>
+<div class="api_layout">
+    <header class="header-login">
+        <img class="backBtn" src="../../image/btn_back.png" alt="" onclick="backIndex()">
+        <div class="aui-searchbar" id="search">
+            <div class="aui-searchbar-input aui-border-radius">
+                <i class="search_ico"></i>
+                <form>
+                    <input type="text" placeholder="搜索" id="search-input">
+                </form>
+            </div>
+            <span class="search_btn" onclick="seacrhWinFun(inputValue)">搜索</span>
+        </div>
+    </header>
+</div>
+</body>
+</html>
+<script type="text/javascript" src="../../script/api.js"></script>
+<!-- <script src="../../script/fastclick.min.js" charset="utf-8"></script> -->
+<script type="text/javascript" src="../../script/config.js"></script>
+<script type="text/javascript">
+var inputValue = ''
+    apiready = function () {
+        $api.fixStatusBar($api.dom('header') );
+        fnInitUIInput();
+        console.log(api.pageParam.token);
+        openSearchFrm(api.pageParam.token);
+    };
+
+    function openSearchFrm(token) {
+        $event.openFrame('searchFile_frm','header','',{token},'');
+    }
+    function backIndex() {
+        // api.sendEvent({
+        //     name: 'userInfo',
+        //     extra: {
+        //         key1: 'value1',
+        //         key2: 'value2'
+        //     }
+        // });
+        api.closeWin();
+    }
+    // input
+    function fnInitUIInput() {
+      var searchText = $api.byId('search-input');
+      var rect = $api.offset(searchText);
+      var UIInput = api.require('UIInput');
+      UIInput.open({
+          rect: {
+              x: rect.l,
+              y: rect.t+1,
+              w: rect.w,
+              h: rect.h-1
+          },
+          styles: {
+              bgColor: '#fff',
+              size: 14,
+              color: '#000',
+              placeholder: {
+                  color: '#ccc'
+              }
+          },
+          autoFocus: false,
+          maxRows: 1,
+          placeholder: '搜索',
+          keyboardType: 'default',
+          fixedOn: api.frameName
+      }, function(ret, err) {
+          if (ret) {
+              var uiInputId = ret.id;
+              if (ret && ret.eventType == "show") {
+                  setTimeout(function() {
+                      UIInput.popupKeyboard({id: uiInputId});
+                  }, 300)
+              } else if (ret.eventType == "change") {
+                  UIInput.value({
+                      id: uiInputId
+                  }, function(ret, err) {
+                      if (ret) {
+                          if (ret.status) {
+                            inputValue = ret.msg;
+                            console.log(inputValue);
+                            seacrhWinFun(ret.msg);
+                          }
+                      }
+                  });
+              }
+          }
+      });
+    }
+    // 查询
+  function seacrhWinFun(text) {
+      api.execScript({
+          name: 'searchFile_win',
+          frameName: 'searchFile_frm',
+          script: 'searchFileList("'+text+'");'
+      });
+    }
+</script>

+ 194 - 0
widget/html/forgetBind/bindPhone.html

@@ -0,0 +1,194 @@
+<!doctype html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <meta name="format-detection"content="telephone=no">
+    <title>index</title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/style.css"/>
+    <link rel="stylesheet" href="../../css/toast.css">
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style media="screen">
+      body,html{
+        margin: 0;
+        background: #ecf0f1;
+      }
+    </style>
+</head>
+<body>
+  <!-- <header class="header-login">
+     <img class="backBtn" src="../../image/btn_back.png" alt="" onclick="backIndex()">
+     <p class="api_text">绑定手机号</p>
+  </header> -->
+  <div class="api_forget_phone">
+      <div class="api_phone">
+        <input type="number" name="" value="" placeholder="请输入手机号" class="api_phone_bind">
+      </div>
+      <div class="api_phone">
+        <input type="number" name="" value="" placeholder="验证码" class="api_vali">
+        <button type="button" class="api_btn_vali" id="verify-sms" onclick="changeTitleOnSendSms()">发送验证码</button>
+      </div>
+      <div class="api_bnt" onclick="bindPhoneFun()">绑定</div>
+  </div>
+</body>
+</html>
+<script type="text/javascript" src="../../script/api.js"></script>
+<!-- <script src="../../script/aui-toast.js" charset="utf-8"></script> -->
+<!-- <script src="../../script/fastclick.min.js"></script> -->
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+    apiready = function () {
+        $api.fixStatusBar($api.dom('header') );
+        api.setStatusBarStyle({
+            style: 'light',
+            color: 'rgba(0,159,232,0.5)'
+        });
+    }
+
+    function backIndex() {
+      api.closeWin();
+    }
+    var interval;
+    function changeTitleOnSendSms() {
+      var phone = $api.dom('.api_phone_bind').value;
+      var reg = /^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$/;
+      if (!reg.test(phone)) {
+        api.toast({
+            msg: '电话号码格式不正确',
+            duration: 2000,
+            location: 'top'
+        });
+        return false;
+      }else if (phone == '') {
+        api.toast({
+            msg: '电话号码不能为空',
+            duration: 2000,
+            location: 'top'
+        });
+        return false;
+      }else {
+        phoneFun();
+      	interval = setInterval("changeTime()", 1000);
+      	var verify_btn = $api.byId("verify-sms");
+      	verify_btn.style.backgroundColor = "#D9D9D9";
+        verify_btn.setAttribute('disabled','true');
+      }
+    }
+    //
+    var remaining_time = 30;
+    function changeTime() {
+    	var verify_btn = $api.byId("verify-sms");
+    	$api.html(verify_btn, remaining_time + "s后重发");
+    	remaining_time -= 1;
+    	if (remaining_time <= 0) {
+    		window.clearInterval(interval);
+    		remaining_time = 30;
+    		verify_btn.style.backgroundColor = "#009fe8";
+        verify_btn.removeAttribute('disabled','true');
+    		$api.html(verify_btn, "获取验证码");
+    		// canSms = true;
+    	}
+    }
+    function phoneFun() {
+      var phone = $api.dom('.api_phone_bind');
+      var phoneValue = $api.val(phone);
+      $http.requestData(UrlRouter.vcodeApi,'post',{mobile: phoneValue})
+      .then(ret=>{
+        if (ret.code === 0) {
+          api.toast({
+              msg: '发送成功',
+              duration: 2000,
+              location: 'top'
+          });
+        }else if (ret.code === 3001) {
+          api.toast({
+              msg: '电话号码错误',
+              duration: 2000,
+              location: 'top'
+          });
+        }else if (ret.code === 3002) {
+          api.toast({
+              msg: '发送失败',
+              duration: 2000,
+              location: 'top'
+          })
+        }
+      })
+      .catch(err=>{
+        api.toast({
+            msg: '请求超时!',
+            duration: 2000,
+            location: 'top'
+        });
+      })
+    }
+    // 手机号验证
+    // function checkPhone() {
+		// 	var phone = $api.dom('.api_phone_bind').value;
+		// 	if (!(/^1[34578]\d{9}$/.test(phone))) {
+		// 		return false;
+		// 	}
+		// 	return true;
+		// }
+    // 绑定
+    function bindPhoneFun() {
+      var phone = $api.dom('.api_phone_bind').value,
+          vcode = $api.dom('.api_vali').value;
+          var reg = /^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$/;
+          if (!reg.test(phone)) {
+            api.toast({
+                msg: '电话号码格式不正确',
+                duration: 2000,
+                location: 'top'
+            });
+            return false;
+          }
+          if(phone !='' && vcode !=''){
+            $http.requestDataLoging(UrlRouter.setApi,'post',{mobile: phone,vcode})
+            .then(ret=>{
+              if (ret.code === 0) {
+                api.toast({
+                    msg: '绑定成功',
+                    duration: 2000,
+                    location: 'top'
+                });
+                api.sendEvent({
+                  name: 'myEvent',
+                  extra: {
+                      key1: 'value1',
+                      key2: 'value2'
+                  }
+                });
+                api.closeWin();
+              }else if (ret.code === 4002) {
+                api.toast({
+                    msg: '验证码超时或者错误',
+                    duration: 2000,
+                    location: 'top'
+                });
+              }else if (ret.code === 4001) {
+                api.toast({
+                    msg: '缺少必要参数',
+                    duration: 2000,
+                    location: 'top'
+                });
+              }
+            })
+            .catch(err=>{
+              api.toast({
+                  msg: '网络超时',
+                  duration: 2000,
+                  location: 'top'
+              });
+            })
+          }else {
+            api.toast({
+                msg: '手机号或验证码不能为空',
+                duration: 2000,
+                location: 'top'
+            });
+          }
+    }
+</script>

+ 196 - 0
widget/html/forgetBind/forgetPass.html

@@ -0,0 +1,196 @@
+<!doctype html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <meta name="format-detection"content="telephone=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/style.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/toast.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style media="screen">
+      body,html{
+        background: #ecf0f1;
+      }
+    </style>
+</head>
+<body>
+  <div class="api_layout">
+      <!-- <header class="header-login">
+         <img class="backBtn" src="../../image/btn_back.png" alt="" onclick="backIndex()">
+         <p class="api_text">修改密码</p>
+      </header> -->
+      <div class="api_forget_phone">
+          <div class="api_phone">
+            <input type="number" name="" value="" placeholder="请输入手机号" class="api_phone_bind">
+          </div>
+          <div class="api_phone">
+            <input type="number" name="" value="" placeholder="验证码" class="api_vali">
+            <button type="button" class="api_btn_vali" id="verify-sms" onclick="changeTitleOnSendSms()">发送验证码</button>
+          </div>
+          <div class="api_phone">
+          <input type="password" placeholder="输入新密码" class="api_new_pass">
+          </div>
+          <div class="api_phone">
+            <input type="password" placeholder="重复新密码" onblur="passVerification()" class="api_new_pass01">
+          </div>
+          <div class="api_bnt" onclick="sureForget()">确认修改</div>
+      </div>
+  <div class="api_layout">
+</body>
+</html>
+<script type="text/javascript" src="../../script/api.js"></script>
+<!-- <script src="../../script/aui-toast.js" charset="utf-8"></script> -->
+<!-- <script src="../../script/fastclick.min.js"></script> -->
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+    var uuid;
+    apiready = function () {
+        $api.fixStatusBar($api.dom('header'));
+        var info = $api.getStorage('data');
+        uuid = JSON.parse(info).data.user.staff_num;
+    }
+    function backIndex() {
+      api.closeWin();
+    };
+    var interval;
+    function changeTitleOnSendSms() {
+      var phone = $api.dom('.api_phone_bind').value;
+      var reg = /^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$/;
+      if (phone == "") {
+        api.toast({
+            msg: '电话号码不能为空',
+            duration: 2000,
+            location: 'top'
+        });
+        return false;
+      }else if (!reg.test(phone)) {
+        api.toast({
+            msg: '电话号码格式不正确',
+            duration: 2000,
+            location: 'top'
+        });
+        return false;
+      }else {
+        phoneFun();
+      	interval = setInterval("changeTime()", 1000);
+      	var verify_btn = $api.byId("verify-sms");
+      	verify_btn.style.backgroundColor = "#D9D9D9";
+        verify_btn.setAttribute('disabled','true');
+      }
+    }
+    //
+    var remaining_time = 30;
+    function changeTime() {
+    	var verify_btn = $api.byId("verify-sms");
+    	$api.html(verify_btn, remaining_time + "s后重发");
+    	remaining_time -= 1;
+    	if (remaining_time <= 0) {
+    		window.clearInterval(interval);
+    		remaining_time = 30;
+    		verify_btn.style.backgroundColor = "#009fe8";
+        verify_btn.removeAttribute('disabled','true');
+    		$api.html(verify_btn, "获取验证码");
+    		// canSms = true;
+    	}
+    }
+    function phoneFun() {
+      var mobile = $api.val($api.dom('.api_phone_bind'));
+      $http.requestData(UrlRouter.vcodeApi,'post',{mobile})
+      .then(ret=>{
+        if (ret.code === 0) {
+          api.toast({
+              msg: '发送成功',
+              duration: 2000,
+              location: 'top'
+          });
+        }else if (ret.code === 3001) {
+          api.toast({
+              msg: '电话号码错误',
+              duration: 2000,
+              location: 'top'
+          });
+        }else if (ret.code === 3002) {
+          api.toast({
+              msg: '发送失败',
+              duration: 2000,
+              location: 'top'
+          });
+        }
+      })
+      .catch(err=>{
+        api.toast({
+            msg: '发送失败',
+            duration: 2000,
+            location: 'top'
+        });
+      })
+    };
+    // 密码做验证
+    function passVerification() {
+      var newPass = $api.dom('.api_new_pass').value,
+          api_new_pass01 = $api.dom('.api_new_pass01').value;
+          if (newPass != api_new_pass01) {
+            api.toast({
+                msg: '两次密码不一致',
+                duration: 2000,
+                location: 'top'
+            });
+            return false;
+          }else {
+            return true;
+          }
+    }
+    function sureForget() {
+      var mobile = $api.dom('.api_phone_bind').value,
+          vcode = $api.dom('.api_vali').value,
+          password = $api.dom('.api_new_pass').value;
+      if (mobile != '' && vcode != '' && password != '' && passVerification()) {
+        $http.requestDataLoging(UrlRouter.repasswordApi,'post',{mobile,vcode,password})
+        .then(ret=>{
+          if(ret.code === 0){
+            api.toast({
+                msg: '修改密码成功',
+                duration: 2000,
+                location: 'top'
+            });
+            var userInfo = {username:uuid,password:""}
+            $api.setStorage('userInfo',JSON.stringify(userInfo));
+            api.openWin({
+                name: 'login',
+                reload:true,
+                slidBackEnabled:false,
+                url: '../../login.html',
+                pageParam:{
+                  status:true
+                }
+            });
+            api.closeWin({
+                name:'index'
+            });
+          }else if(ret.code === 4002){
+            api.toast({
+                msg: '验证码超时',
+                duration: 2000,
+                location: 'top'
+            });
+          }
+        })
+        .catch(err=>{
+          api.toast({
+              msg: '发送失败',
+              duration: 2000,
+              location: 'top'
+          });
+        })
+      }else {
+        api.toast({
+            msg: '手机号,验证码,密码不能为空',
+            duration: 2000,
+            location: 'top'
+        })
+      }
+    }
+</script>

+ 43 - 0
widget/html/mail/mailList.html

@@ -0,0 +1,43 @@
+<!doctype html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <meta name="format-detection"content="telephone=no">
+    <title>index</title>
+    <link rel="stylesheet" type="text/css" href="./../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/style.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style media="screen">
+      body,html{
+        margin: 0;
+        background: #fff;
+      }
+    </style>
+</head>
+<body>
+  <div id="wrap">
+    <header class="header-login">
+       <img class="backBtn" src="../../image/btn_back.png" alt="" onclick="backIndex()">
+       <p class="api_text">信息科</p>
+    </header>
+  </div>
+</body>
+</html>
+<script type="text/javascript" src="../../script/api.js"></script>
+<script type="text/javascript" src="../../script/doT.min.js"></script>
+<!-- <script src="../../script/fastclick.min.js" charset="utf-8"></script> -->
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+  apiready = function () {
+    $api.fixStatusBar($api.dom('header'));
+    // openFram()
+  }
+  function openFram() {
+    $event.openFrame('mailList_frm','header','','','');
+  }
+  function backIndex() {
+    api.closeWin();
+  }
+</script>

+ 156 - 0
widget/html/mail/mailList_frm.html

@@ -0,0 +1,156 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/toast.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/style.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style>
+      html,body{
+        background: #fff;
+      }
+      .api_layout{
+        width: 100%;
+        position: relative;
+      }
+      .api_mail_name{
+        font-size: 16px;
+      }
+      .header-title{
+        width: 50px;
+        height: 50px;
+        line-height: 50px;
+        text-align: center;
+        border-radius: 50%;
+        display: block;
+        background: red;
+        /*margin-bottom: 10px;*/
+        margin: 0px auto 10px auto;
+        color: #fff;
+        font-size: 16px;
+        font-weight: bold;
+      }
+      .api_mail_post{
+        width: 100%;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        white-space: nowrap;
+      }
+      .api_mail_items .api_mail_item{
+        text-align: center;
+        padding: 15px;
+      }
+
+      .api_mail_items .api_mail_item p {
+          margin-bottom: 12px;
+          font-size: 14px;
+          color: #97a3b4;
+      }
+      .api_mail_items .api_mail_item p.api_mail_name {
+          color: #232627;
+      }
+      .api_mail_items .api_mail_item p span {
+          font-size: 14px;
+          color: #232627;
+      }
+      .api_mail_items .api_mail_item .api_mail_details {
+          font-size: 14px;
+          color: #0064FF;
+      }
+</style>
+</head>
+<body>
+    <div class="api_layout" id="wrap">
+      <div class="api_mail_info">
+        <p class="api_title_text">部门人员:</p>
+        <ul class="api_mail_items" id="api_mail_items">
+          <!-- <li class="api_mail_item">
+            <img src="http://jiewei-icon.oss-cn-beijing.aliyuncs.com/icon/default-avatar.png" alt="" class="api_mail_logo">
+            <p class="api_mail_name">19995262241</p>
+            <p class="api_mail_tel">TEL:<span>19995262241</span></p>
+            <p class="api_mail_post">职务:<span>飒飒飒飒飒飒飒飒飒飒飒飒阿萨飒飒</span></p>
+            <span class="api_mail_details">查看详情</span>
+            <img src="../../image/more01.png" alt="" class="api_more01">
+          </li>
+          <li class="api_mail_item">
+            <span class="header-title">惠</span>
+            <p class="api_mail_name">19995262241</p>
+            <p class="api_mail_tel">TEL:<span>19995262241</span></p>
+            <p class="api_mail_post">职务:<span>飒飒飒飒飒飒飒飒飒飒飒飒阿萨飒飒</span></p>
+            <span class="api_mail_details">查看详情</span>
+            <img src="../../image/more01.png" alt="" class="api_more01">
+          </li> -->
+        </ul>
+      </div>
+    </div>
+</body>
+</html>
+<script type="text/template" id="template_mail">
+    {{~it:value}}
+    <li class="api_mail_item">
+      <div onclick="openDetails('{{=value.name}}','{{=value.mobile}}','{{=value.avatar}}','{{=value.position_name}}')">
+        {{?value.avatar!=null }}
+          <img src="{{=value.avatar}}" class="api_mail_logo">
+        {{??}}
+          <span class="header-title" style="background:#{{=Math.floor(Math.random()*0xffffff).toString(16)}}">{{=value.name.substr(value.name.length-1,1)}}</span>
+        {{?}}
+        <p class="api_mail_name" style="font-size:16px;">{{=value.name}}</p>
+        <p class="api_mail_tel">电话:<span>{{=value.mobile == null?'无':value.mobile}}</span></p>
+        <p class="api_mail_post">职务:<span>{{=value.position_name == 'null'?'无':value.position_name}}</span></p>
+      </div>
+      <span class="api_mail_details" onclick="openPersonalInfo('{{=value.staff_num}}')">查看详情</span>
+      <img src="../../image/more01.png" alt="" class="api_more01">
+    </li>
+    {{~}}
+</script>
+<script type="text/javascript" src="../../script/api.js"></script>
+<script type="text/javascript" src="../../script/doT.min.js"></script>
+<!-- <script src="../../script/fastclick.min.js" charset="utf-8"></script> -->
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+  var toast = new auiToast();
+  apiready = function () {
+      api.parseTapmode();
+      var info = $api.getStorage('data'),
+      user = JSON.parse(info).data.user;
+      token = JSON.parse(info).data.access_token;
+      getPersonalInfo(token,api.pageParam.id);
+  }
+  function getPersonalInfo(token,ids) {
+    var headers = {
+        "Authorization": "Bearer " + token
+    };
+    var data={
+      id:ids
+    }
+    $http.fnReuestData(UrlRouter.getPersonalList,headers,'post',data,function (ret,err) {
+      if (ret && ret.code === 0) {
+        $apis.append(api_mail_items,'#template_mail',ret.data);
+        toast.hide();
+      }else {
+        toast.hide();
+        api.toast({
+            msg: '网络错误',
+            duration: 2000,
+            location: 'bottom'
+        });
+      }
+    })
+  }
+  function openDetails(name,phone,img,del) {
+    var param = {
+        username: name,
+        mobile:phone,
+        avatar:img,
+        delp:del
+    };
+    $event.openPopup(api.winWidth,'auto','modul',param)
+  }
+  function openPersonalInfo(ids){
+    $event.openPopup('auto','auto','personalInfo',{id: ids})
+  }
+</script>

+ 117 - 0
widget/html/mail/modul.html

@@ -0,0 +1,117 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <title>title</title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <style>
+    	html,body{
+			background: transparent;
+			-webkit-touch-callout: none;
+			font-family: Tahoma, Geneva, sans-serif;
+			font-style: normal;
+      margin: 0;
+		}
+		#dialog{
+			background-color: #fff;
+			position: absolute; margin: auto;
+			left: 0; right: 0; top: -150px; bottom: 0;
+			width: 260px; height: 290px;
+			opacity: 0;
+      text-align: center;
+      padding: 20px 0;
+      box-sizing: border-box;
+			-webkit-border-radius: 5px;
+			border-radius: 5px;
+		}
+		#dialog.in{
+			opacity: 1;
+		}
+    .name{
+      font-size: 25px;
+      color: #000;
+      /*font-weight: bold;*/
+    }
+    .head{
+      width: 90px;
+      height: 90px;
+      border-radius: 50%;
+    }
+    .del{
+      color: #bdc3c7;
+      font-size: 16px;
+      margin: 5px 0;
+    }
+    .phone{
+      font-size: 20px;
+    }
+    .call_phone{
+      position: absolute;
+      bottom: -30px;
+      left: 100px;
+      width: 60px;
+      height: 60px;
+      background: url("../../image/mobile_icon.png") no-repeat;
+      background-size: cover;
+      border-radius: 50%;z-index: 100;
+    }
+    .close{
+      position: absolute;
+      top: -8px;
+      right: -8px;
+      width: 30px;
+      height: 30px;
+      background: url("../../image/close.png") no-repeat;
+      background-size: cover;
+      background-position: center;
+      border-radius: 50%;
+      z-index: 100;
+    }
+    </style>
+</head>
+<body>
+	<div id="dialog">
+
+	</div>
+</body>
+<script type="text/template" id="personalInfo">
+	<img src="{{=it.avatar == 'null'?'http://jiewei-icon.oss-cn-beijing.aliyuncs.com/icon/default-avatar.png':it.avatar}}" class="head">
+	<p class="name">{{=it.username}}</p>
+	{{?it.id != "" && it.id != undefined}}
+		<div onclick="seeDetail('{{=it.id}}')" style="color:#009fe8;margin-top:5px;">查看详情</div>
+	{{?}}
+	<p class="del">{{=it.delp == 'null'? '无' : it.delp}}</p>
+	<p class="phone">{{=it.mobile == 'null'? '无' : it.mobile}}</p>
+	<span class="call_phone" tapmode onclick="call_phone()"></span>
+	<span class="close" tapmode onclick="api.closeFrame()"></span>
+</script>
+<script type="text/javascript" src="../../script/api.js"></script>
+<script src="../../script/doT.min.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../script/config.js"></script>
+<script type="text/javascript">
+	$api.addCls(dialog,'in');
+	apiready = function(){
+			var obj = {username,mobile,avatar,delp,id} = api.pageParam
+			$apis.html(dialog,'#personalInfo',obj);
+	};
+	// 查看详情
+	function seeDetail(id) {
+		$event.openPopup('auto','auto','personalInfo',{id})
+	}
+	// 拨打电话
+	function call_phone() {
+		if ($api.html($api.dom('.phone')) == "无") {
+			api.alert({
+			    title: '提示',
+			    msg: '暂无手机号',
+			});
+		}else {
+			api.call({
+			    type: 'tel_prompt',
+			    number: $api.html($api.dom('.phone'))
+			});
+		}
+	}
+</script>
+</html>

+ 203 - 0
widget/html/mail/organization.html

@@ -0,0 +1,203 @@
+<!doctype html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <meta name="format-detection"content="telephone=no">
+    <title>index</title>
+    <link rel="stylesheet" type="text/css" href="./../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/style.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/toast.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style media="screen">
+      body,html{
+        margin: 0;
+        background: #fff;
+      }
+      .api_seach_personal{
+        padding: 0 15px;
+        box-sizing: border-box;
+        position: relative;
+        background: #f1f5f7;
+        width: 90%;
+        margin: auto;
+        margin-top: 10px;
+        /*border-bottom: 1px solid #ebebeb;*/
+      }
+      .api_seach_personal_box{
+        height: 45px;
+      }
+      .api_seach_personal input{
+        box-sizing: border-box;
+        height: 44px;
+        width: 100%;
+        padding-left: 15px;
+        border: none;
+        outline: none;
+        padding-right: 40px;
+        -webkit-tap-highlight-color:rgba(0,0,0,0);
+        -webkit-tap-highlight-color: transparent;
+      }
+      /*.seach_api{*/
+        /*width: 44px;*/
+        /*height: 44px;*/
+        /*background: url("../../image/seach_api.png") no-repeat;*/
+        /*background-size: cover;*/
+        /*position: absolute;*/
+        /*top: 20px;*/
+        /*right: 20px;*/
+      /*}*/
+    </style>
+</head>
+<body>
+  <header class="header-login">
+     <img class="backBtn" src="../../image/btn_back.png" alt="" onclick="backIndex()">
+     <p class="api_text">通讯录</p>
+  </header>
+  <div style="padding-bottom:10px;"class="api_seach_personal_box relative after-border">
+    <div class="api_seach_personal" id="api_seach_personal">
+      <input type="text" name="" value="" placeholder="" class="info" id="info_input">
+    </div>
+  </div>
+</body>
+</html>
+<script type="text/javascript" src="../../script/api.js"></script>
+<!-- <script src="../../script/fastclick.min.js" charset="utf-8"></script> -->
+<script type="text/javascript" src="../../script/config.js"></script>
+<script type="text/javascript">
+var UIInputId;
+    apiready = function () {
+        $api.fixStatusBar($api.dom('header') );
+        var info = $api.getStorage('data'),
+        user = JSON.parse(info).data.user;
+        token = JSON.parse(info).data.access_token;
+        // api.parseTapmode();
+        fnInitUIInput(token);
+        openFram();
+        openSeachList();
+    }
+    function openSeachList(){
+      var info = $api.dom('.info').value;;
+      var UIListSearch = api.require('UIListSearch');
+      UIListSearch.open({
+          rect: {
+              x: 0,
+              y: $api.dom('header').offsetHeight + $api.dom('.api_seach_personal').offsetHeight+30,
+              w: api.winWidth,
+              h: api.winHeigh
+          },
+          contacts:[],
+          fixedOn: api.organization_frame
+      }, function(ret, err) {
+          if (ret) {
+              UIListSearch.hide();
+              var UIInput = api.require('UIInput');
+              UIInput.closeKeyboard({
+                  id:UIInputId
+              });
+              openDetails(ret.contact.name,ret.contact.mobile,ret.contact.avatar,ret.contact.position);
+          }
+       });
+       UIListSearch.hide();
+    };
+    // 数据更新
+    function functionName(arr) {
+      var UIListSearch = api.require('UIListSearch');
+        UIListSearch.show();
+        UIListSearch.reloadData({
+        contacts:JSON.parse(arr)
+        });
+    }
+    function openFram() {
+      api.openFrame({
+          name: 'organization_frame',
+          bounces: true,
+          url: 'organization_frame.html',
+          rect: {
+              x: 0,
+              y: $api.dom('header').offsetHeight + $api.dom('.api_seach_personal_box').offsetHeight+10,
+              w: api.winWidth,
+              h: 'auto',
+          },
+          pageParam: {
+              // name: 'test'
+          }
+      });
+    }
+    function backIndex() {
+      api.closeWin();
+      var UIListSearch = api.require('UIListSearch');
+      UIListSearch.close();
+    }
+    // input
+    function fnInitUIInput(tokens) {
+      var searchText = $api.byId('info_input');
+      var rect = $api.offset(searchText);
+      var UIInput = api.require('UIInput');
+      UIInput.open({
+          rect: {
+              x: rect.l,
+              y: rect.t,
+              w: rect.w,
+              h: rect.h
+          },
+          styles: {
+              bgColor: '#f1f5f7',
+              size: 14,
+              color: '#000',
+              placeholder: {
+                  color: '#ccc'
+              }
+          },
+          autoFocus: false,
+          maxRows: 1,
+          placeholder: '使用姓名,工号查找',
+          keyboardType: 'default',
+          fixedOn: api.frameName
+      }, function(ret, err) {
+          // console.log(JSON.stringify(ret));
+          UIInputId = ret.id;
+          if (ret.eventType == "change") {
+            UIInput.value({
+                id: ret.id
+            }, function(ret, err) {
+                if (ret) {
+                    if (ret.status) {
+                      if (ret.msg == "") {
+                        var UIListSearch = api.require('UIListSearch');
+                        UIListSearch.hide();
+                      }else {
+                        selectPersonal(tokens,ret.msg);
+                        // functionName()
+                      }
+                    }
+                }
+            });
+            // functionName();
+          }
+      });
+    }
+    // 查询
+    function selectPersonal(token,name) {
+      var headers = {
+          "Authorization": "Bearer " + token
+      };
+       $http.fnReuestDataNologing(UrlRouter.searchPersonal,headers,'post',{content:name},function (ret,err) {
+         if (ret.code === 0) {
+           functionName(JSON.stringify(ret.data))
+         }
+        // console.log(JSON.stringify(ret));
+      })
+    }
+    // 点击人员列表看详情
+    function openDetails(name,phone,img,del) {
+      var param = {
+        username: name,
+        mobile:phone,
+        avatar:img,
+        delp:del
+      };
+      $event.openPopup(api.winWidth,'auto','modul',param);
+    }
+</script>

+ 195 - 0
widget/html/mail/organization_frame.html

@@ -0,0 +1,195 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+     <link rel="stylesheet" type="text/css" href="../../css/toast.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/style.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style>
+        html,body{
+          background: #fff;
+        }
+        .api_layout{
+          width: 100%;
+          position: relative;
+        }
+      .bannerOr{
+        height: 135px;
+        width: 100%;
+        background:url('') no-repeat;
+        background-size: 100% 100%;
+      }
+      .h3{
+        font-size: 21px;
+        padding: 19px 15px;
+        position: relative;
+        font-weight: normal;
+      }
+      .icon{
+        display: block;
+        width: 35px;
+        height: 35px;
+        background: url(../../image/t.png) no-repeat;
+        background-size: cover;
+        margin-right: 20px;
+      }
+      .list{
+          padding: 0 10px;
+      }
+      .list li{
+          padding: 12px 0;
+          padding-left: 15px;
+      }
+      .del_name{
+        font-size: 16px;
+        color: #000;
+        /*font-weight: bold;*/
+      }
+      .icon_left{
+          width: 16px;
+          height: 16px;
+          display: block;
+          background: url("../../image/more.png") no-repeat;
+          background-size: contain;
+          position: absolute;
+          right: 10px;
+      }
+    </style>
+</head>
+<body>
+    <div class="api_layout">
+        <div class="bannerOr" id="bannerOr"></div>
+        <div class="organization_content" id="organization_content">
+            <!-- <div class="organization_item">
+              <h3 class="h3 after-border">机关部室</h3>
+              <ul class="list relative after-border">
+                 <li class="flex-start relative after-border">
+                    <i class="icon"></i>
+                    <p class="del_name">领导班子 (8人)</p>
+                    <i class="icon_left"></i>
+                 </li>
+                  <li class="flex-start relative after-border">
+                      <i class="icon"></i>
+                      <p class="del_name">领导班子 (8人)</p>
+                      <i class="icon_left"></i>
+                  </li>
+                  <li class="flex-start relative after-border">
+                      <i class="icon"></i>
+                      <p class="del_name">领导班子 (8人)</p>
+                      <i class="icon_left"></i>
+                  </li>
+              </ul>
+            </div>
+            <div class="organization_item">
+                <h3 class="h3 after-border">机关部室</h3>
+                <ul class="list relative after-border">
+                    <li class="flex-start relative after-border">
+                        <i class="icon"></i>
+                        <p class="del_name">领导班子 (8人)</p>
+                        <i class="icon_left"></i>
+                    </li>
+                    <li class="flex-start relative after-border">
+                        <i class="icon"></i>
+                        <p class="del_name">领导班子 (8人)</p>
+                        <i class="icon_left"></i>
+                    </li>
+                    <li class="flex-start relative after-border">
+                        <i class="icon"></i>
+                        <p class="del_name">领导班子 (8人)</p>
+                        <i class="icon_left"></i>
+                    </li>
+                </ul>
+            </div> -->
+        </div>
+    </div>
+</body>
+</html>
+<script type="text/template" id="template_organzation">
+  {{ for(var prop in it) { }}
+    {{? prop != 'leader'}}
+      <div class="organization_item">
+        <h3 class="h3 after-border">{{=it[prop].name}}</h3>
+        <ul class="list relative after-border">
+          {{ for (var i=0;i<it[prop].data.length;i++) { }}
+           <li class="flex-start relative after-border" onclick="openPersonalList('{{=it[prop].data[i].id}}','{{=it[prop].data[i].title}}')">
+              <i class="icon"></i>
+              <p class="del_name">{{=it[prop].data[i].title}} ({{=it[prop].data[i].user_num}}人)</p>
+              <i class="icon_left"></i>
+           </li>
+            {{ } }}
+        </ul>
+      </div>
+    {{?}}
+  {{ } }}
+</script>
+<script type="text/javascript" src="../../script/api.js"></script>
+<script type="text/javascript" src="../../script/doT.min.js"></script>
+<script src="../../script/config.js" charset="utf-8"></script>
+
+<script type="text/javascript">
+var toast = new auiToast();
+  apiready = function () {
+      $api.fixStatusBar($api.dom('header'));
+      var info = $api.getStorage('data'),
+      user = JSON.parse(info).data.user;
+      token = JSON.parse(info).data.access_token;
+      getGroupList(token)
+  }
+  function getGroupList(token) {
+    var headers = {
+        "Authorization": "Bearer " + token
+    };
+    $http.fnReuestData(UrlRouter.getGroupList,headers,'get','',function (ret,err) {
+      if (ret && ret.code === 0) {
+        if (ret.data.banner == '#') {
+          $api.css($api.dom('#bannerOr'), 'display:none');
+        }else {
+          $api.css($api.dom('#bannerOr'), 'display:block');
+          document.getElementById('bannerOr').style.background = 'url('+ret.data.banner+')';
+          document.getElementById('bannerOr').style.backgroundSize = '100% 100%';
+        }
+        $apis.append(organization_content,'#template_organzation',ret.data.group);
+        toast.hide()
+      }else {
+        toast.hide()
+        api.toast({
+            msg: '网络错误',
+            duration: 2000,
+            location: 'bottom'
+        });
+      }
+    })
+  }
+  function openPersonalList(ids,title) {
+    var pageParam ={
+      id:ids
+    }
+    $event.openTabLayout('mailList_frm','mailList_frm',title,pageParam)
+  }
+  // 点击人员列表看详情
+  function openDetails(name,phone,img,del) {
+    api.openFrame({
+        name: 'modul',
+        bounces: false,
+        url: 'modul.html',
+        bgColor:'rgba(0,0,0,.6)',
+        rect: {
+            x: 0,
+            y: 0,
+            w: api.winWidth,
+            h: 'auto',
+        },
+        pageParam: {
+            username: name,
+            mobile:phone,
+            avatar:img,
+            delp:del
+        }
+    });
+    // $event.openFrame('modul','','','','');
+  }
+</script>

+ 319 - 0
widget/html/mail/personalInfo.html

@@ -0,0 +1,319 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/aui.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style>
+          html,body{
+          background: transparent;
+          -webkit-touch-callout: none;
+        }
+        .api_layout{
+          width: 100%;
+          position: fixed; margin: auto;
+          left: 0; right: 0; top: 90px; bottom: 0;
+          border-radius: 10px;
+          overflow: hidden;
+        }
+        #scroll{
+          width: 100%;
+          height: 90%;
+          overflow-y: scroll;
+          -webkit-overflow-scrolling: touch;
+          border-radius: 10px;
+          border-bottom-left-radius: 10px;
+          border-bottom-right-radius: 10px;
+        }
+        .api_lists{
+          border-bottom-left-radius: 10px;
+          border-bottom-right-radius: 10px;
+        }
+        .aui-toast{
+          width: 125px;
+        }
+        .close_frm{
+          display: block;
+          background: url(../../image/close.png) no-repeat;
+          background-size: cover;
+          width: 31px;
+          height: 30px;
+          margin-right: 10px;
+        }
+        .aui-list .aui-list-item{
+          padding: 0 0.75rem;
+          background-image: linear-gradient(90deg,#dddddd,#dddddd 0%,transparent 0%)!important;
+          background-image: -webkit-linear-gradient(90deg,#dddddd,#dddddd 0%,transparent 0%)!mportant;
+        }
+        .aui-list .aui-list-item-inner{
+          padding-right: 0;
+        }
+        .aui-list-item span{
+          color: #000;
+          font-weight: bold;
+        }
+        .close_box{
+          background:#fff;
+          display:flex;
+          justify-content:flex-end;
+          border-top-left-radius: 10px;
+          border-top-right-radius: 10px;
+          padding-top:5px;
+        }
+        .api_layout .header_img1{
+          width: 50px;
+          height: 50px;
+          border-radius: 50%;
+          text-align: center;
+          line-height: 50px;
+          color: #fff;
+          font-size: 14px;
+        }
+    </style>
+</head>
+<body>
+    <div class="api_layout" id="api_layout">
+      <div id="scroll">
+        <p class="close_box"><i class="close_frm" onclick="api.closeFrame()"></i></p>
+        <ul class="aui-list api_lists">
+          <li class="aui-list-item" style="height:70px;">
+              <div class="aui-list-item-inner after-border" style="height:70px;">
+                  <div class="aui-list-item-title">个人照片</div>
+                  <span class="header_img1" id="head_img">为</span>
+              </div>
+          </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner after-border">
+                    <div class="aui-list-item-title" >绑定手机号</div>
+                    <span class="api_bind_phone"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner after-border">
+                    <div class="aui-list-item-title">姓名</div>
+                    <span class="api_name"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner after-border">
+                    <div class="aui-list-item-title">员工编码</div>
+                    <span class="api_num"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner after-border">
+                    <div class="aui-list-item-title">部门</div>
+                    <span class="api_del"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner after-border">
+                    <div class="aui-list-item-title">岗位分类</div>
+                    <span class="api_type"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner after-border">
+                    <div class="aui-list-item-title">岗位</div>
+                    <span class="api_post"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner after-border">
+                    <div class="aui-list-item-title">职级(职务码)</div>
+                    <span class="api_rank"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner after-border">
+                    <div class="aui-list-item-title">性别</div>
+                    <span class="api_sex"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner after-border">
+                    <div class="aui-list-item-title">员工组</div>
+                    <span class="api_contract"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner after-border">
+                    <div class="aui-list-item-title">员工子组</div>
+                    <span class="api_staff"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner after-border">
+                    <div class="aui-list-item-title">籍贯</div>
+                    <span class="api_city"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner after-border">
+                    <div class="aui-list-item-title">宗教信仰</div>
+                    <span class="api_religion"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner after-border">
+                    <div class="aui-list-item-title">户口性质</div>
+                    <span class="api_residence"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner after-border">
+                    <div class="aui-list-item-title">民族</div>
+                    <span class="api_nation"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner after-border">
+                    <div class="aui-list-item-title">出生日期</div>
+                    <span class="api_rirth"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner after-border">
+                    <div class="aui-list-item-title">身份证号</div>
+                    <span class="api_id"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner after-border">
+                    <div class="aui-list-item-title">参加工作时间</div>
+                    <span class="api_job_time"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner after-border">
+                    <div class="aui-list-item-title">进入神华系统时间</div>
+                    <span class="api_time1"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner after-border">
+                    <div class="aui-list-item-title">进入子分公司时间</div>
+                    <span class="api_time2"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner after-border">
+                    <div class="aui-list-item-title">进入本单位时间</div>
+                    <span class="api_time3"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner after-border">
+                    <div class="aui-list-item-title">政治面貌</div>
+                    <span class="api_face"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner after-border">
+                    <div class="aui-list-item-title">参加党派时间</div>
+                    <span class="api_time4"></span>
+                </div>
+            </li>
+        </ul>
+      </div>
+    </div>
+</body>
+</html>
+<script type="text/javascript" src="../../script/api.js"></script>
+<!-- <script src="../../script/aui-toast.js" charset="utf-8"></script> -->
+<!-- <script src="../../script/fastclick.min.js"></script> -->
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+  var token;
+  apiready = function () {
+      document.getElementById('api_layout').style.width = api.winWidth - 60 +'px'
+      document.getElementById('api_layout').style.height = api.winHeight - 50 +'px'
+      // $api.css($api.dom('.api_layout'), 'height:200px;width:200px');
+      $api.fixStatusBar($api.dom('header'));
+      var info = $api.getStorage('data'),
+      token = JSON.parse(info).data.access_token;
+      var headers = {
+          "Authorization": "Bearer " + token
+      };
+      // 个人信息
+      $http.fnReuestDataNologing(UrlRouter.userInfoApi,headers,'post',{staff_num:api.pageParam.id},personalCenterInfo);
+  };
+  // 个人信息
+  function personalCenterInfo(ret,err){
+      if (ret) {
+        if (ret.code === 0) {
+          var ret = ret.data;
+          var phone =  $api.dom(".api_bind_phone"),
+              name =   $api.dom(".api_name"),
+              api_num =   $api.dom(".api_num"),
+              api_del =   $api.dom(".api_del"),
+              api_type =   $api.dom(".api_type"),
+              api_post =   $api.dom(".api_post"),
+              api_rank =   $api.dom(".api_rank"),
+              api_sex =   $api.dom(".api_sex"),
+              api_contract =   $api.dom(".api_contract"),
+              api_staff =   $api.dom(".api_staff"),
+              api_city =   $api.dom(".api_city"),
+              api_religion =   $api.dom(".api_religion"),
+              api_residence =   $api.dom(".api_residence"),
+              api_nation =   $api.dom(".api_nation"),
+              api_rirth =   $api.dom(".api_rirth"),
+              api_id =   $api.dom(".api_id"),
+              api_job_time =   $api.dom(".api_job_time"),
+              api_time1 =   $api.dom(".api_time1"),
+              api_time2 =   $api.dom(".api_time2"),
+              api_time3 =   $api.dom(".api_time3"),
+              api_face =   $api.dom(".api_face"),
+              api_time4 =   $api.dom(".api_time4"),
+              image = 'http://jiewei-icon.oss-cn-beijing.aliyuncs.com/icon/default-avatar.png',
+              head_img = $api.byId('head_img');
+              if (ret.avatar == null) {
+                $api.addCls(head_img, 'header_img1');
+                $api.removeCls(head_img, 'header_img');
+                $api.html(head_img, ret.name.substr(ret.name.length-1,1));
+                $api.css($api.dom('.header_img1'), 'background:#'+Math.floor(Math.random()*0xffffff).toString(16)+'');
+                // document.getElementsByClassName('header_img1').style.background = Math.floor(Math.random()*0xffffff).toString(16)
+              }else {
+                $api.addCls(head_img, 'header_img');
+                $api.removeCls(head_img, 'header_img1');
+                $api.html(head_img, '');
+                console.log(ret.avatar);
+                head_img.style.backgroundImage = 'url('+ret.avatar+')';
+              }
+              $api.html(phone, ret.mobile == null?'无':ret.mobile);
+              $api.html(name, ret.name);
+              $api.html(api_num, ret.staff_num);
+              $api.html(api_del, ret.section_fullname);
+              $api.html(api_type, ret.job_classify);
+              $api.html(api_post, ret.job);
+              $api.html(api_rank, ret.duty_num);
+              $api.html(api_sex, ret.sex);
+              $api.html(api_contract, ret.group);
+              $api.html(api_staff, ret.group_sub);
+              $api.html(api_city, ret.native);
+              $api.html(api_religion, ret.faith);
+              $api.html(api_residence, ret.registered);
+              $api.html(api_nation, ret.nation);
+              $api.html(api_rirth, ret.birthday);
+              $api.html(api_id, ret.identity_card);
+              $api.html(api_job_time, ret.working_date);
+              $api.html(api_time1, ret.system_date);
+              $api.html(api_time2, ret.system_sub_date);
+              $api.html(api_time3, ret.section_date);
+              $api.html(api_face, ret.politics);
+              // $api.html(api_id, ret.staff_num);
+              $api.html(api_time4, ret.politics_date);
+           }
+       }else {
+         api.toast({
+             msg: '网络错误',
+             duration: 2000,
+             location: 'bottom'
+         });
+    }
+  }
+</script>

+ 71 - 0
widget/html/main.html

@@ -0,0 +1,71 @@
+<!DOCTYPE HTML>
+<html>
+
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="maximum-scale=1.0, minimum-scale=1.0, user-scalable=0, initial-scale=1.0, width=device-width" />
+    <meta name="format-detection" content="telephone=no, email=no, date=no, address=no">
+    <title>Hello APP</title>
+    <link rel="stylesheet" type="text/css" href="../css/api.css" />
+    <style>
+        label {
+            margin: 10px;
+            font-size: 24px;
+        }
+
+        ul {
+            margin-bottom: 10px;
+        }
+
+        ul li {
+            margin: 5px 10px;
+            padding: 5px;
+            color: #000;
+            word-wrap: break-word;
+        }
+    </style>
+</head>
+
+<body>
+    <label>Hello APP</label>
+    <div id='sys-info'></div>
+</body>
+<script type="text/javascript" src="../script/api.js"></script>
+<script type="text/javascript">
+    apiready = function() {
+        var ver = api.version;
+        var sType = api.systemType;
+        var sVer = api.systemVersion;
+        var id = api.deviceId;
+        var model = api.deviceModel;
+        var name = api.deviceName;
+        var cType = api.connectionType;
+        var winName = api.winName;
+        var winWidth = api.winWidth;
+        var winHeight = api.winHeight;
+        var frameName = api.frameName || '';
+        var frameWidth = api.frameWidth || '';
+        var frameHeight = api.frameHeight || '';
+
+        var str = '<ul>';
+        str += '<li>引擎版本信息: ' + ver + '</li>';
+        str += '<li>系统类型: ' + sType + '</li>';
+        str += '<li>系统版本: ' + sVer + '</li>';
+        str += '<li>设备标识: ' + id + '</li>';
+        str += '<li>设备型号: ' + model + '</li>';
+        str += '<li>设备名称: ' + name + '</li>';
+        str += '<li>网络状态: ' + cType + '</li>';
+        str += '<li>主窗口名字: ' + winName + '</li>';
+        str += '<li>主窗口宽度: ' + winWidth + '</li>';
+        str += '<li>主窗口高度: ' + winHeight + '</li>';
+        str += '<li>子窗口名字: ' + frameName + '</li>';
+        str += '<li>子窗口宽度: ' + frameWidth + '</li>';
+        str += '<li>子窗口高度: ' + frameHeight + '</li>';
+        str += '</ul>';
+
+        $api.byId('sys-info').innerHTML = str;
+
+    };
+</script>
+
+</html>

+ 219 - 0
widget/html/material/diffSearchType.html

@@ -0,0 +1,219 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0" />
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title></title>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <link rel="stylesheet" href="../../css/elementUi.css">
+    <style>
+        html,
+        body {
+            /*background: #FAFAFA;*/
+            background: #FAFAFA;
+            max-height: 100%
+        }
+
+        .container {
+            margin-top: 31px;
+        }
+
+        .material_name_type {
+            height: 38px;
+            margin: 10px 13px;
+            display: flex;
+            justify-content: space-around;
+            align-items: center;
+            background: rgba(255, 255, 255, 1);
+            box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.2);
+            border-radius: 5px;
+        }
+
+        .material_name_type .material_name {
+            padding-top: 2px;
+            padding-left: 14px;
+            font-size: 14px;
+            font-weight: 400;
+            color: rgba(35, 38, 39, 1);
+        }
+
+        .material_name_type .line {
+            width: 1px;
+            height: 17.5px;
+            background: #BDC3C7;
+        }
+
+        .material_name_type img {
+            display: block;
+            width: 14px;
+            height: 14px;
+        }
+
+        .material_name_type input {
+            box-sizing: border-box;
+            height: 22px;
+            width: 220px;
+            padding-left: 15px;
+            border: none;
+            outline: none;
+            color: #929292;
+            font-size: 14px;
+            padding-top: 2px;
+            -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+            -webkit-tap-highlight-color: transparent;
+        }
+
+        .search_container {
+            margin: 0 13px;
+            display: flex;
+            justify-content: flex-end;
+            margin-top: 15px;
+        }
+
+        .search_container div {
+            width: 66px;
+            height: 30px;
+            text-align: center;
+            line-height: 30px;
+            background: rgba(0, 159, 232, 1);
+            font-size: 14px;
+            font-weight: 400;
+            border-radius: 20px;
+            color: rgba(255, 255, 255, 1);
+        }
+
+        .search_history_container {
+            margin: 16px 13px
+        }
+
+        .history_title {
+            font-size: 15px;
+            font-weight: 500;
+            color: rgba(44, 62, 80, 1);
+        }
+
+        .material_prefs {
+            margin: 11px 13px;
+            display: flex;
+            /*justify-content: space-around;*/
+            align-items: center;
+        }
+
+        .material_prefs li {
+            padding: 5px;
+            font-weight: 400;
+            color: rgba(35, 38, 39, 1);
+            background: rgba(240, 240, 240, 1);
+            border-radius: 10px;
+        }
+    </style>
+
+</head>
+
+<body>
+    <div id="app">
+        <div class="container">
+            <div class="material_name_type">
+                <div class="material_name">物资名称</div>
+                <div class="line"></div>
+                <img src="../../image/search.png" alt="">
+                <input type="text" name="" value="" placeholder="请输入物资名称" autofocus="autofocus" class="info" id="info_input_name">
+            </div>
+            <div class="material_name_type">
+                <div class="material_name">规格型号</div>
+                <div class="line"></div>
+                <img src="../../image/search.png" alt="">
+                <input type="text" name="" value="" placeholder="请输入规格型号" autofocus="autofocus" class="info" id="info_input_specs">
+            </div>
+            <div class="material_name_type">
+                <div class="material_name">所在位置</div>
+                <div class="line"></div>
+                <img src="../../image/search.png" alt="">
+                <input type="text" name="" value="" placeholder="请输入所在位置" autofocus="autofocus" class="info" id="info_input_position">
+            </div>
+        </div>
+
+        <div class="search_container" onclick="handleSearchType()">
+            <div>搜索</div>
+        </div>
+<!--
+        <div class="search_history_container">
+            <div class="history_title">搜索历史</div>
+            <div class="history_item">
+                <div id="different_item"></div>
+            </div>
+        </div> -->
+    </div>
+</body>
+
+<!-- <script src="https://unpkg.com/vue/dist/vue.js"></script>
+<script src="https://unpkg.com/element-ui/lib/index.js"></script>
+<script src="https://unpkg.com/axios/dist/axios.min.js"></script> -->
+<!-- <script type="text/template" charset="utf-8" id="templateHistoryItem">
+    <ul class="material_prefs">
+        {{?materialNamePrefs!=''}}
+        <li>{{= materialNamePrefs}}</li>
+        {{?}}
+        {{?materialSpecsPrefs!=''}}
+        <li>{{= materialSpecsPrefs}}</li>
+        {{?}}
+        {{?materialPositionPrefs!=''}}
+        <li>{{= materialPositionPrefs}}</li>
+        {{?}}
+    </ul>
+</script> -->
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../script/api.js"></script>
+<script src="../../script/config.js" charset="utf-8"></script>
+<!-- <script src="../../script/zepto.js" charset="utf-8"></script>
+<script src="../../script/doT.min.js" charset="utf-8"></script> -->
+<script charset="utf-8">
+    var materialName = '',
+        materialSpecs = '',
+        materialPosition = ''
+        // materialNamePrefs = '',
+        // materialSpecsPrefs = '',
+        // materialPositionPrefs = '';
+    apiready = function() {
+        // materialNamePrefs = api.getPrefs({
+        //     sync: true,
+        //     key: 'materialName'
+        // });
+        // materialSpecsPrefs = api.getPrefs({
+        //     sync: true,
+        //     key: 'materialSpecs'
+        // });
+        // materialPositionPrefs = api.getPrefs({
+        //     sync: true,
+        //     key: 'materialPosition'
+        // });
+        // let materialObj = {
+        //     materialNamePrefs: materialNamePrefs,
+        //     materialSpecsPrefs: materialSpecsPrefs,
+        //     materialPositionPrefs: materialPositionPrefs
+        // }
+        // $apis.html(different_item, '#templateHistoryItem', materialObj);
+    }
+
+    function handleSearchType() {
+        materialName = $api.val($api.byId('info_input_name'));
+        materialSpecs = $api.val($api.byId('info_input_specs'));
+        materialPosition = $api.val($api.byId('info_input_position'));
+
+
+        var pageParams = {
+            materialName: materialName ? materialName : '',
+            materialSpecs: materialSpecs ? materialSpecs : '',
+            materialPosition: materialPosition ? materialPosition : '',
+        }
+
+        $event.openTabLayout('materialsStorage' + Math.random(), '../material/searchMaterialsStorage', '物资查询', pageParams);
+        $api.val($api.byId('info_input_name'), '');
+        $api.val($api.byId('info_input_specs'), '');
+        $api.val($api.byId('info_input_position'), '')
+    }
+</script>
+
+</html>

+ 187 - 0
widget/html/material/materialsClassifyChild.html

@@ -0,0 +1,187 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/aui.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style>
+        body{
+          background: #FAFAFA;
+        }
+        /*物资*/
+        /*物资搜索输入框*/
+        .api_seach_material{
+          display: flex;
+          padding: 0 15px;
+          box-sizing: border-box;
+          background: #f1f5f7;
+          width: 90%;
+          margin: auto;
+          margin-top: 10px;
+          justify-content: space-between;
+          /*border-bottom: 1px solid #ebebeb;*/
+        }
+        .api_seach_material_box{
+          height: auto;
+          width: 100%;
+          position: fixed;
+          top: 0;
+          left: 0;
+          z-index: 1000;
+          background: #fff;
+        }
+        .api_seach_material input{
+          box-sizing: border-box;
+          height: 44px;
+          /*width: 100%;*/
+          padding-left: 15px;
+          border: none;
+          outline: none;
+          padding-right: 40px;
+          -webkit-tap-highlight-color:rgba(0,0,0,0);
+          -webkit-tap-highlight-color: transparent;
+        }
+        .right_api_seach {
+          display: flex;
+          align-items: center;
+          width: 120px;
+          color: #262626;
+        }
+        .api_seach_btn {
+          padding-left: 15px;
+        }
+
+
+
+        /*物资分类样式*/
+        .get_materials_classify_list {
+          margin-top: 70px;
+        }
+        .materials_classify_container {
+          box-sizing: border-box;
+          display: flex;
+          align-items: center;
+          padding: 10px;
+          margin: 10px 0 0 0;
+          border-top: solid 1px #e8e8e8;
+          border-bottom: solid 1px #e8e8e8;
+          background: #fff;
+        }
+        /*.materials_classify_title {
+          padding: 10px 0 0 10px;
+          color: #1890ff;
+          background: red;
+        }*/
+        .left_classify_id {
+          display: flex;
+          flex-flow: column;
+          justify-content: center;
+          align-items: center;
+          width: 50px;
+          height: 50px;
+          margin-left: 10px;
+          border-radius: 50px;
+          background: #009fe8;
+          color: #fafafa;
+        }
+        .right_classify_title {
+          margin-left: 50px;
+        }
+    </style>
+
+</head>
+<body>
+  <!-- 顶部搜索框 -->
+  <div style="padding-bottom:10px;"class="api_seach_material_box relative after-borders">
+    <div class="api_seach_material" id="api_seach_material">
+      <input type="text" name="" value="" placeholder="请输入需要查询的物资" autofocus="autofocus" class="info" id="info_input">
+      <div class="right_api_seach" onclick="getDepiction()">
+        <div class="api_seach_meterial_line">
+          |
+        </div>
+        <div class="api_seach_btn">
+          搜索
+        </div>
+     </div>
+    </div>
+  </div>
+  <!-- 物资列表 -->
+  <div class="get_materials_list" id='materials_list'>
+
+  </div>
+  <!-- <div class="materials_classify_title">
+    分类列表
+  </div> -->
+  <div class="get_materials_classify_list" id='materials_classify_child_list'>
+
+  </div>
+  <div class="noText hide">
+    <img src="../../image/noText.png" alt="">
+  </div>
+</body>
+</html>
+
+<script type="text/javascript" src="../../script/api.js"></script>
+<script src="../../script/doT.min.js" charset="utf-8"></script>
+<script src="../../script/config.js" charset="utf-8"></script>
+
+<!-- 物资分类 -->
+<script type="text/template" id="templateMaterialClassify">
+   {{~it:value}}
+     <div class="materials_classify_container" onclick="getMaterialsList('{{=value.id}}')">
+       <div class="left_classify_id">
+         <div class="classify_number">编号</div>
+         <div class="classify_id">{{=value.id}}</div>
+       </div>
+       <div class="right_classify_title">
+            {{=value.title}}
+       </div>
+     </div>
+   {{~}}
+</script>
+<script>
+  let toast = new auiToast();
+  let classifyId,storageId
+  apiready = function () {
+    classifyId = api.pageParam.classify || '';
+    storageId = api.pageParam.storage || '';
+    getMaterialsClassify();
+  }
+  const getMaterialsClassify = () => {
+    $http.fnReuestData(UrlRouter.getMaterialClassifyList,'','get',{classify: classifyId},handleMaterClassifyCb)
+  }
+  const handleMaterClassifyCb = (ret,err) => {
+    if (ret.code === 0) {
+        $apis.html(materials_classify_child_list,'#templateMaterialClassify',ret.data);
+        toast.hide()
+    } else {
+      toast.hide()
+      api.toast({
+          msg: '获取信息失败',
+          duration: 2000,
+          location: 'top'
+      });
+    }
+  }
+  const getDepiction = () => {
+    const material_name = $api.val($api.byId('info_input'));
+    let pageParams = {
+      material_name: material_name,
+      storage: storageId,
+      classify: classifyId
+    }
+    $api.val($api.byId('info_input'), '');
+    $event.openTabLayout('materialsList','materialsList','物资列表',pageParams);
+  }
+  const getMaterialsList = (id) => {
+      let pageParams = {
+        storage: storageId,
+        classify: id
+      }
+     $event.openTabLayout('materialsList'+Math.random(),'materialsList','物资列表',pageParams);
+  }
+</script>

+ 185 - 0
widget/html/material/materialsClassify_win.html

@@ -0,0 +1,185 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/aui.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style>
+        body{
+          background: #FAFAFA;
+        }
+        /*物资*/
+        /*物资搜索输入框*/
+        .api_seach_material{
+          display: flex;
+          padding: 0 15px;
+          box-sizing: border-box;
+          background: #f1f5f7;
+          width: 90%;
+          margin: auto;
+          margin-top: 10px;
+          justify-content: space-between;
+          /*border-bottom: 1px solid #ebebeb;*/
+        }
+        .api_seach_material_box{
+          height: auto;
+          width: 100%;
+          position: fixed;
+          top: 0;
+          left: 0;
+          z-index: 1000;
+          background: #fff;
+        }
+        .api_seach_material input{
+          box-sizing: border-box;
+          height: 44px;
+          /*width: 100%;*/
+          padding-left: 15px;
+          border: none;
+          outline: none;
+          padding-right: 40px;
+          -webkit-tap-highlight-color:rgba(0,0,0,0);
+          -webkit-tap-highlight-color: transparent;
+        }
+        .right_api_seach {
+          display: flex;
+          align-items: center;
+          width: 100px;
+          color: #262626;
+        }
+        .api_seach_btn {
+          padding-left: 15px;
+        }
+
+
+
+        /*物资分类样式*/
+        .get_materials_classify_list {
+          margin-top: 70px;
+        }
+        .materials_classify_container {
+          box-sizing: border-box;
+          display: flex;
+          align-items: center;
+          padding: 10px;
+          margin: 10px 0 0 0;
+          border-top: solid 1px #e8e8e8;
+          border-bottom: solid 1px #e8e8e8;
+          background: #fff;
+        }
+        /*.materials_classify_title {
+          padding: 10px 0 0 10px;
+          color: #1890ff;
+          background: red;
+        }*/
+        .left_classify_id {
+          display: flex;
+          flex-flow: column;
+          justify-content: center;
+          align-items: center;
+          width: 50px;
+          height: 50px;
+          margin-left: 10px;
+          border-radius: 50px;
+          background: #009fe8;
+          color: #fafafa;
+        }
+
+        .right_classify_title {
+          margin-left: 50px;
+          /*color: #009fe8;*/
+        }
+    </style>
+
+</head>
+<body>
+  <!-- 顶部搜索框 -->
+  <div style="padding-bottom:10px;"class="api_seach_material_box relative after-borders">
+    <div class="api_seach_material" id="api_seach_material">
+      <input type="text" name="" value="" placeholder="请输入需要查询的物资" autofocus="autofocus" class="info" id="info_input">
+      <div class="right_api_seach" onclick="getDepiction()">
+        <div class="api_seach_meterial_line">
+          |
+        </div>
+        <div class="api_seach_btn">
+          搜索
+        </div>
+     </div>
+    </div>
+  </div>
+  <!-- 分类列表 -->
+  <div class="get_materials_classify_list" id='materials_classify_list'>
+
+  </div>
+  <div class="noText hide">
+    <img src="../../image/noText.png" alt="">
+  </div>
+</body>
+</html>
+
+<script type="text/javascript" src="../../script/api.js"></script>
+<script src="../../script/doT.min.js" charset="utf-8"></script>
+<script src="../../script/config.js" charset="utf-8"></script>
+
+<!-- 物资分类 -->
+<script type="text/template" id="templateMaterialClassify">
+   {{~it:value}}
+     <div class="materials_classify_container" onclick="getMaterialsChidList('{{=value.id}}')">
+       <div class="left_classify_id">
+         <div class="classify_number">编号</div>
+         <div class="classify_id">{{=value.id}}</div>
+       </div>
+       <div class="right_classify_title">
+            {{=value.title}}
+       </div>
+     </div>
+   {{~}}
+</script>
+<script>
+  let toast = new auiToast();
+  let storageValue
+  apiready = function () {
+    getMaterialsClassify()
+    let storage = api.pageParam.id || '';
+    storageValue = storage
+    // console.log(JSON.stringify(storageValue));
+  }
+
+  const getMaterialsClassify = () => {
+    $http.fnReuestData(UrlRouter.getMaterialClassifyList,'','get','',handleMaterClassifyCb)
+  }
+  const handleMaterClassifyCb = (ret,err) => {
+    if (ret.code === 0) {
+        $apis.html(materials_classify_list,'#templateMaterialClassify',ret.data);
+        toast.hide()
+    } else {
+      toast.hide()
+      api.toast({
+          msg: '获取信息失败',
+          duration: 2000,
+          location: 'top'
+      });
+    }
+  }
+  const getDepiction = () => {
+    const material_name = $api.val($api.byId('info_input'));
+    let pageParams = {
+      material_name: material_name,
+      storage: storageValue
+    }
+    $api.val($api.byId('info_input'), '');
+    $event.openTabLayout('materialsList','materialsList','物资列表',pageParams);
+  }
+
+  const getMaterialsChidList = (id) => {
+      let pageParams = {
+        classify: id || '',
+        storage: storageValue
+      }
+      $event.openTabLayout('materialsList'+Math.random(),'materialsList','物资列表',pageParams);
+  }
+</script>

+ 217 - 0
widget/html/material/materialsList.html

@@ -0,0 +1,217 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/aui.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style>
+        body{
+          background: #FAFAFA;
+        }
+        /*物资*/
+        /*物资搜索输入框*/
+        .api_seach_material{
+          display: flex;
+          padding: 0 15px;
+          box-sizing: border-box;
+          background: #f1f5f7;
+          width: 90%;
+          margin: auto;
+          margin-top: 10px;
+          justify-content: space-between;
+          /*border-bottom: 1px solid #ebebeb;*/
+        }
+        .api_seach_material_box{
+          height: auto;
+          width: 100%;
+          position: fixed;
+          top: 0;
+          left: 0;
+          z-index: 1000;
+          background: #fff;
+        }
+        .api_seach_material input{
+          box-sizing: border-box;
+          height: 44px;
+          padding-left: 15px;
+          border: none;
+          outline: none;
+          padding-right: 40px;
+          -webkit-tap-highlight-color:rgba(0,0,0,0);
+          -webkit-tap-highlight-color: transparent;
+        }
+        .right_api_seach {
+          display: flex;
+          align-items: center;
+          width: 100px;
+          color: #262626;
+        }
+        .api_seach_btn {
+          padding-left: 15px;
+        }
+        .icon-close {
+          width: 20px;
+          height: 20px;
+          line-height: 20px;
+          border-radius: 20px;
+          display: none;
+          text-align: center;
+          background-color: rgba(0, 0, 0, 0.1);
+        }
+
+        /*.right_api_seach {
+          display: flex;
+          justify-content: space-around;
+          align-items: center;
+          width: 120px;
+          color: #262626;
+        }
+
+        .api_seach_btn {
+          padding-left: 15px;
+        }*/
+        /*  物资列表主体页面*/
+        .get_materials_list {
+          margin-top: 70px;
+          font-size: 14px;
+          color: #000;
+        }
+        .template_material_box {
+          padding: 10px;
+          margin: 10px;
+          display: flex;
+          flex-flow: column;
+          border: solid 1px #ebeef3;
+        }
+        /*物资描述 (容器头部)*/
+        .material_depiction_header {
+        }
+        /*仓库名称(容器中间)*/
+        .material_center {
+          display: flex;
+        }
+        .material_s_num,.material_s_price {
+          padding-left: 10px;
+        }
+        .material_s_num {
+          color: #fa8c16
+        }
+        .material_storage {
+          color: #009fe8
+        }
+        /**/
+        /*单价 数量 分类等 */
+        .material_depiction_footer {
+          display: flex;
+          font-size: 12px;
+          color: #909399
+        }
+        .material_footer_item {
+          padding-left: 10px;
+        }
+    </style>
+
+</head>
+<body>
+  <!-- 顶部搜索框 -->
+  <div style="padding-bottom:10px;"class="api_seach_material_box relative after-borders">
+    <div class="api_seach_material" id="api_seach_material">
+      <input type="text" name="" value="" placeholder="请输入物资的名称或编号" autofocus="autofocus" class="info" id="info_input">
+      <div class="right_api_seach" onclick="getDepiction()">
+        <div class="icon-close" onclick="closeSearch()">
+          <i class="aui-iconfont aui-icon-close"></i>
+        </div>
+        <div class="api_seach_meterial_line">
+          |
+        </div>
+        <div class="api_seach_btn">
+          搜索
+        </div>
+     </div>
+    </div>
+  </div>
+   <div class="get_materials_list" id='materials_list'>
+
+   </div>
+   <div class="noText hide">
+     <img src="../../image/noText.png" alt="">
+   </div>
+</body>
+</html>
+<!-- 物资列表页面 -->
+<script type="text/template" id="templateMaterial">
+  {{~it:value}}
+     <div class="template_material_box">
+       <div class="material_depiction_header material_item">
+         {{=value.depiction}}
+       </div>
+       <div class="material_center material_item">
+         <div class="material_storage">{{=value.storage}}</div>
+         <!-- <div class="material_s_price">¥{{=value.s_price}}</div> -->
+         <div class="material_s_num">{{=value.s_num}}{{=value.unit}}</div>
+       </div>
+       <div class="material_depiction_footer material_item">
+         <div class="material_c_name">{{=value.c_name}}</div>
+         <div class="material_encode material_footer_item">{{=value.encode}}</div>
+       </div>
+     </div>
+  {{~}}
+</script>
+
+<script type="text/javascript" src="../../script/api.js"></script>
+<script src="../../script/doT.min.js" charset="utf-8"></script>
+<script src="../../script/config.js" charset="utf-8"></script>
+<script src="../../script/zepto.js" charset="utf-8">
+
+</script>
+<script type="text/javascript">
+
+
+</script>
+
+<script>
+  let toast = new auiToast();
+  let storage,classify
+  apiready = function () {
+    storage = api.pageParam.storage || '';
+    classify = api.pageParam.classify || '';
+    depiction = api.pageParam.material_name || '';
+    getMaterialList(depiction,storage,classify);
+    $api.val($api.byId('info_input'), depiction);
+    // $('#info_input').keyup(function() {
+    //   $api.css($api.dom('.icon-close'), 'display: block');
+    // })
+  }
+  function getMaterialList(depiction,storage,classify) {
+    $http.fnReuestDataNologing(UrlRouter.getMaterial, '', 'get', {depiction: depiction,storage: storage,classify: classify}, function(ret,err) {
+        if (ret.code === 0) {
+            // console.log(JSON.stringify(ret.data.data));
+            $apis.html(materials_list,'#templateMaterial',ret.data.data);
+            if(ret.data.data.length) {
+              $api.addCls($api.dom('.noText'), 'hide');
+            } else {
+              $api.removeCls($api.dom('.noText'), 'hide');
+            }
+        }
+    });
+  }
+
+  function getDepiction() {
+    let searchDepiction = $api.val($api.byId('info_input'));
+    if(searchDepiction) {
+      getMaterialList(searchDepiction,storage,'')
+    } else {
+      getMaterialList(searchDepiction,storage,classify)
+    }
+  }
+
+  // function closeSearch() {
+  //   $api.css($api.dom('.icon-close'), 'display: none');
+  //   $api.val($api.byId('info_input'), '');
+  // }
+
+</script>

+ 181 - 0
widget/html/material/materialsStorage.html

@@ -0,0 +1,181 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/aui.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style>
+        html,body{
+          /*background: #FAFAFA;*/
+          background: #FAFAFA;
+          max-height: 100%
+        }
+
+        .get_materials_storage_list {
+          margin: 70px 15px 0 15px;
+          background: #fff;
+          display: flex;
+          flex-direction: row;
+          flex-wrap: wrap;
+          justify-content: space-around;
+          border-radius: 5px;
+        }
+
+        .get_materials_storage_list_item {
+          background: #fff;
+          width: 30%;
+          margin-top: 10px;
+          display: flex;
+          flex-flow: column;
+          justify-content: flex-start;
+          align-items: center;
+        }
+
+        .get_materials_storage_list_item img {
+          width: 40px;
+          height: 40px;
+          border-radius: 40px;
+          display: block;
+        }
+
+        .storage-name {
+          width: 50px;
+          padding-top: 5px;
+          white-space: wrap;      /*超出的空白区域不换行*/
+          overflow: hidden;         /*超出隐藏*/
+          text-overflow: ellipsis;  /*文本超出显示省略号*/
+        }
+
+
+
+        /*物资*/
+        /*物资搜索输入框*/
+        .api_seach_material{
+          display: flex;
+          padding: 0 15px;
+          box-sizing: border-box;
+          background: #f1f5f7;
+          width: 90%;
+          margin: auto;
+          margin-top: 10px;
+          justify-content: space-between;
+          /*border-bottom: 1px solid #ebebeb;*/
+        }
+        .api_seach_material_box{
+          height: auto;
+          width: 100%;
+          position: fixed;
+          top: 0;
+          left: 0;
+          z-index: 1000;
+          background: #fff;
+        }
+        .api_seach_material input{
+          box-sizing: border-box;
+          height: 44px;
+          padding-left: 15px;
+          border: none;
+          outline: none;
+          padding-right: 40px;
+          -webkit-tap-highlight-color:rgba(0,0,0,0);
+          -webkit-tap-highlight-color: transparent;
+        }
+        .right_api_seach {
+          display: flex;
+          align-items: center;
+          width: 100px;
+          color: #262626;
+        }
+        .api_seach_btn {
+          padding-left: 15px;
+        }
+
+
+    </style>
+
+</head>
+<body>
+  <!-- 顶部搜索框 -->
+  <div style="padding-bottom:10px;"class="api_seach_material_box relative after-borders">
+    <div class="api_seach_material" id="api_seach_material">
+      <input type="text" name="" value="" placeholder="请输入需要查询的物资" autofocus="autofocus" class="info" id="info_input">
+      <div class="right_api_seach" onclick="getDepiction()">
+        <div class="api_seach_meterial_line">
+          |
+        </div>
+        <div class="api_seach_btn">
+          搜索
+        </div>
+     </div>
+    </div>
+  </div>
+  <!-- 物资仓库 -->
+   <div class="get_materials_storage_list relative after-borders" id='materials_storage_list'>
+
+   </div>
+   <div class="noText hide">
+     <img src="../../image/noText.png" alt="">
+   </div>
+</body>
+</html>
+<!-- 仓库页面 -->
+<script type="text/template" id="templateMaterialStorage">
+  {{~it:value}}
+     <div class="get_materials_storage_list_item"  onclick="getMaterialClassify('{{=value.id}}')">
+           <img src="{{=value.thumb}}">
+           <div class="storage-name">{{=value.name}}</div>
+     </div>
+  {{~}}
+</script>
+
+<script type="text/javascript" src="../../script/api.js"></script>
+<script src="../../script/doT.min.js" charset="utf-8"></script>
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+
+
+</script>
+
+<script>
+  var toast = new auiToast();
+  apiready = function () {
+    getMaterialStorageList();
+    console.log('1212121212');
+  }
+  const getMaterialStorageList = (depiction) => {
+    $http.fnReuestData(UrlRouter.getMaterialStorageList, '', 'get', '',handleMaterStorageCb);
+  }
+  const handleMaterStorageCb = (ret,err) => {
+    if (ret.code === 0) {
+        $apis.html(materials_storage_list,'#templateMaterialStorage',ret.data);
+        toast.hide()
+    } else {
+      toast.hide()
+      api.toast({
+          msg: '获取信息失败',
+          duration: 2000,
+          location: 'top'
+      });
+    }
+  }
+
+  function getMaterialClassify (id) {
+    let pageParams = {
+      id: id
+    }
+    $event.openTabLayout('materialsClassify_win','materialsClassify_win','物资分类',pageParams);
+  }
+
+  function getDepiction() {
+    const material_name = $api.val($api.byId('info_input'));
+    let pageParams = {
+      material_name: material_name
+    }
+    $api.val($api.byId('info_input'), '');
+    $event.openTabLayout('materialsList','materialsList','物资列表',pageParams);
+  }
+</script>

+ 292 - 0
widget/html/material/searchMaterialsStorage.html

@@ -0,0 +1,292 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0" />
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css" />
+    <link rel="stylesheet" type="text/css" href="../../css/aui.css" />
+    <link rel="stylesheet" type="text/css" href="../../css/table.css" />
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style>
+        html,
+        body {
+            /*background: #FAFAFA;*/
+            background: #FAFAFA;
+            max-height: 100%
+        }
+
+        .api_seach_material_box {
+            height: 62.5px;
+            width: 100%;
+            position: fixed;
+            top: 0;
+            left: 0;
+            z-index: 1000;
+            background: #009FE8;
+        }
+        /*物资搜索输入框*/
+
+        .api_seach_material {
+            height: 34px;
+            display: flex;
+            justify-content: center;
+            align-items: center;
+            background: rgba(255, 255, 255, 1);
+            border-radius: 34px;
+            margin: 14px 12px;
+        }
+
+        .api_seach_material div {
+            font-size: 16px;
+            font-weight: 400;
+            color: rgba(146, 146, 146, 1);
+            padding-left: 5px;
+        }
+
+        .api_seach_material img {
+            display: inline-block;
+            width: 16px;
+            height: 16px;
+        }
+
+        .get_materials_storage_list_table {}
+
+        .el-pagination {
+            margin-top: 10px;
+            float: right;
+        }
+
+        .header-container {
+            width: 100%;
+            margin-top: 62.5px
+            /*position: fixed;
+            top: 62.5px;
+            left: 0;*/
+        }
+
+        .header-container ul {
+            width: 820px;
+            height: 60px;
+            display: flex;
+            align-items: center;
+            overflow-x: scroll;
+            text-align: center;
+            background: rgba(243, 246, 250, 1);
+        }
+
+        #tableList {
+            width: 820px;
+            text-align: center;
+        }
+
+        #tableList ul li {
+            height: 60px;
+            /*padding: 10px 0;*/
+            display: flex;
+            align-items: center;
+            text-align: center;
+            justify-content: space-around;
+            border-bottom: solid 1px #E0E1E2;
+        }
+
+        .encode_width,
+        .name_width,
+        .storage_width {
+            width: 100px
+        }
+
+        .specs_width {
+            width: 200px;
+        }
+
+        .depiction_width {
+            width: 200px;
+        }
+
+        .depiction_width_item,
+        .specs_width_item {
+            width: 200px;
+        }
+
+        .depiction_width_item div {
+            width: 100%;
+            word-break: break-all;
+            text-overflow: ellipsis;
+            display: -webkit-box;
+            /** 对象作为伸缩盒子模型显示 **/
+            -webkit-box-orient: vertical;
+            /** 设置或检索伸缩盒对象的子元素的排列方式 **/
+            -webkit-line-clamp: 2;
+            /** 显示的行数 **/
+            overflow: hidden;
+            /** 隐藏超出的内容 **/
+        }
+
+        .num_width {
+            width: 70px;
+        }
+
+        .unit_width {
+            width: 50px;
+        }
+    </style>
+
+</head>
+
+<body>
+    <div id="app">
+        <div class="list_container">
+            <div style="padding-bottom:10px;" class="api_seach_material_box">
+                <div class="api_seach_material" id="api_seach_material" onclick="openDiffSearchType()">
+                    <img src="../../image/search.png" alt="">
+                    <div>搜索</div>
+                </div>
+            </div>
+
+            <div class="header-container">
+                <ul>
+                    <li class="encode_width">物资编码</li>
+                    <li class="name_width">物资名称</li>
+                    <li class="specs_width">规则型号</li>
+                    <li class="depiction_width">物资描述</li>
+                    <li class="num_width">数量</li>
+                    <li class="unit_width">单位</li>
+                    <li class="storage_width">所在位置</li>
+                </ul>
+            </div>
+            <div id="tableList"></div>
+
+            <div class="noText" v-show="marterialLength == 0">
+                <img src="../../image/noText.png" alt="">
+            </div>
+        </div>
+    </div>
+    </div>
+</body>
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../script/api.js"></script>
+<script src="../../script/doT.min.js" charset="utf-8"></script>
+<script src="../../script/fastclick.min.js" charset="utf-8"></script>
+
+<script type="text/template" id="templateMaterial">
+    {{~it:value}}
+    <ul style="display: flex">
+        <li class="encode_width">
+            <div>
+                {{=value.encode}}
+            </div>
+
+        </li>
+        {{?value.name}}
+        <li class="name_width">
+            <div>{{=value.name}}</div>
+
+        </li>
+        {{??}}
+        <li class="name_width">
+            <div>暂无数据</div>
+
+        </li>
+        {{?}} {{?value.specs}}
+        <li class="specs_width_item">
+            <div>
+                {{=value.specs}}
+            </div>
+
+        </li>
+        {{??}}
+        <li class="specs_width_item">
+            <div>
+                暂无数据
+            </div>
+
+        </li>
+        {{?}}
+
+
+        <li class="depiction_width_item">
+            <div>
+                {{=value.depiction}}
+            </div>
+
+        </li>
+        <li class="num_width">
+            <div>
+                {{=value.num}}
+            </div>
+
+        </li>
+        <li class="unit_width">
+            <div>
+                {{=value.unit}}
+            </div>
+
+        </li>
+        <li class="storage_width">
+            <div>
+                {{=value.storage}}
+            </div>
+
+        </li>
+    </ul>
+    {{~}}
+</script>
+<script>
+    var materialNameStorage = '',
+        materialSpecsStorage = '',
+        materialPositionStorage = '',
+        page = 1;
+    apiready = function() {
+        materialNameStorage = api.pageParam.materialName;
+        materialSpecsStorage = api.pageParam.materialSpecs;
+        materialPositionStorage = api.pageParam.materialPosition;
+        getMaterialList();
+        api.addEventListener({
+            name: 'scrolltobottom',
+            extra: {
+                threshold: 0
+            }
+        }, function(ret, err) {
+            // ajax 在已经加载列表的基础上,请求加载下一页页面
+            getMaterialList(page+=1);
+
+
+        });
+    }
+
+    function getMaterialList(page) {
+        api.showProgress({
+            title: '加载中',
+            // text: '先喝杯茶...',
+            modal: true
+        });
+        $http.fnReuestDataNologing(UrlRouter.getMaterial, '', 'get', {
+            depiction: '',
+            storage: materialPositionStorage,
+            classify: '',
+            encode: '',
+            name: materialNameStorage,
+            specs: materialSpecsStorage,
+            page: page
+        }, function(ret, err) {
+            if (ret.code === 0) {
+                api.hideProgress();
+                $apis.html(tableList, '#templateMaterial', ret.data.data);
+                if (ret.data.data.length) {
+                    $api.addCls($api.dom('.noText'), 'hide');
+                } else {
+                    $api.removeCls($api.dom('.noText'), 'hide');
+                }
+            }
+        });
+    }
+
+    function openDiffSearchType() {
+        $event.openTabLayout('diffSearchType'+ Math.random(), '../material/diffSearchType', '物资查询', '')
+    }
+</script>
+
+</html>

+ 100 - 0
widget/html/news/getNewsDetaile.html

@@ -0,0 +1,100 @@
+<!doctype html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <meta name="format-detection"content="telephone=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/style.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style media="screen">
+      body,html{
+        margin: 0;
+        background: #fff;
+      }
+    </style>
+</head>
+<body>
+  <div class="api_layout">
+    <header class="header-login">
+       <img class="backBtn" src="../../image/btn_back.png" alt="" onclick="backIndex()">
+       <p class="api_text">巡检详情</p>
+    </header>
+  </div>
+</body>
+</html>
+<script type="text/javascript" src="../../script/api.js"></script>
+<!-- <script src="../../script/fastclick.min.js"></script> -->
+<!-- <script src="../../script/aui-toast.js" charset="utf-8"></script> -->
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+    var toast = new auiToast();
+    apiready = function () {
+        $api.fixStatusBar($api.dom('header') );
+        var info = $api.getStorage('data'),
+        name = JSON.parse(info).data.user.name,
+        uuid = JSON.parse(info).data.user.staff_num;
+        // departmentID = JSON.parse(info).data.user.section_id;
+        detaile(api.pageParam.URL,name, uuid);
+        keybackFun();
+    };
+    // 详情
+    function detaile(url,name, uuid) {
+      var browser = api.require('webBrowser');
+      browser.openView({
+          url: url+"&uname="+name+"&uuid="+uuid,
+          rect: {
+              x: 0,
+              x: 0,
+              y: $api.dom('header').offsetHeight,
+              w: api.winWidth,
+              h: $api.winHeight
+          }
+      }, function(ret, err) {
+          switch (ret.state) {
+              case 0:
+                  break;
+              case 1:
+                  break;
+              case 2:
+                  break;
+              case 3:
+              var api_text = $api.dom('.api_text');
+              $api.html(api_text, ret.title);
+                  break;
+              case 4:
+                  break;
+              default:
+                  break;
+          }
+      });
+    }
+    function backIndex() {
+      var browser = api.require('webBrowser');
+        browser.historyBack(
+            function(ret, err) {
+                if (!ret.status) {
+                    api.closeWin();
+                }
+            }
+        );
+    }
+    // 监听物理返回键
+    function keybackFun() {
+      api.addEventListener({
+      		name: 'keyback'
+      	}, function(ret, err){
+          var browser = api.require('webBrowser');
+            browser.historyBack(
+                function(ret, err) {
+                    if (!ret.status) {
+                        api.closeWin();
+                    }
+                }
+            );
+
+      });
+    }
+</script>

+ 389 - 0
widget/html/news/news_frm.html

@@ -0,0 +1,389 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,=no,address=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/apiToast.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style>
+        html,body{
+            background: #f1f1f1;
+        }
+        .api_layout{
+            width: 100%;
+            position: relative;
+            padding: 10px 15px;
+            -webkit-box-sizing: border-box;
+            box-sizing: border-box;
+        }
+
+        .colmun{
+            border: 0.5px solid #bdc3c7;
+            -webkit-box-sizing: border-box;
+            box-sizing: border-box;
+            background: #fff;
+            padding: 10px 15px;
+            margin-bottom: 10px;
+        }
+        .title_text{
+            font-weight: bold;
+            width: 86%;
+        }
+        .date{
+            color: #717478;
+            font-size: 14px;
+            margin: 5px 0;
+        }
+        .content{
+            padding-bottom: 8px;
+            overflow-x: scroll;
+        }
+        .content p{
+            color: #000;
+            font-size: 15px;
+            line-height: 1.7;
+        }
+        .seach_more{
+            font-size: 16px;
+            color: #2a81b7;
+            font-weight: bold;
+            display: inline-block;
+            margin-top: 8px;
+        }
+        .status_text{
+            position: absolute;
+            top: -3px;
+            right: -6px;
+            color: #fff;
+            font-size: 14px;
+            padding: 3px 7px;
+            font-style: normal;
+            background: #fc685c;
+            line-height: normal;
+        }
+        .contents p{
+          color:#717478
+        }
+        table tr th{
+          text-align: center;
+        }
+        table tr td{
+          text-align: center;
+        }
+        img{
+          width: 100%;
+        }
+        .overflow_api{
+          overflow: hidden;
+        }
+    </style>
+</head>
+<body>
+<div class="api_layout">
+    <ul class="news_list" id="news_list">
+
+    </ul>
+</div>
+</body>
+</html>
+<script type="text/template" id="template">
+  {{~it:value}}
+    {{? value.read == 0}}
+      <li class="colmun">
+          <div class="title relative">
+              <h3 class="title_text">{{=value.title}}</h3>
+              <i class="status_text">未读</i>
+          </div>
+          <span class="date">{{=value.created_at}}</span>
+          <div class="content relative after-border">
+              <p class="overflow_api">{{=value.content}}</p>
+          </div>
+
+          <span class="seach_more" onclick="wordOrderDe('{{=value.type}}','{{=value.relation_id}}','{{=value.id}}','{{=value.url}}','{{=value.status}}')">详情 > ></span>
+      </li>
+    {{?? value.read == 1}}
+      <li class="colmun">
+          <div class="title relative">
+              <h3 class="title_text" style="color:#6c6f74">{{=value.title}}</h3>
+              <i class="status_text" style="background:#bdc3c7">已读</i>
+          </div>
+          <span class="date">{{=value.created_at}}</span>
+          <div class="content relative after-border">
+              <p class="contents overflow_api">{{=value.content}}</p>
+          </div>
+
+          <span class="seach_more" onclick="wordOrderDe('{{=value.type}}','{{=value.relation_id}}','{{=value.id}}','{{=value.url}}','{{=value.status}}')">详情 > ></span>
+      </li>
+    {{?}}
+{{~}}
+</script>
+<script type="text/javascript" src="../../script/api.js"></script>
+<script src="../../script/doT.min.js" charset="utf-8"></script>
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+    var apiToast = new apiToast(),headers,typeSeacrh,skipS = 1,skipW = 1,skipY = 1,skipSeacrh = 1;
+    var isLoadding = false;
+    apiready = function () {
+        $api.fixStatusBar($api.dom('header'));
+        var info = $api.getStorage('data'),
+        token = JSON.parse(info).data.access_token,
+        departmentID = JSON.parse(info).data.user.section_id;
+        headers = {
+            "Authorization": "Bearer " + token
+        };
+        getNewsListFun('');
+        api.addEventListener({
+  				name : 'scrolltobottom',
+  				extra : {
+  					threshold : 0 //设置距离底部多少距离时触发,默认值为0,数字类型
+  				}
+  			}, function(ret, err) {
+  				if (!isLoadding) {
+  					isLoadding = true;
+  					getNewsListFun(typeSeacrh,false);
+  				}
+  			});
+    };
+    function getNewsListFun(types,flat) {
+      typeSeacrh = types;
+      if (types == 'read') {
+        $http.fnReuestDataNologing(UrlRouter.getRead,headers,'post','',function (ret,err) {
+          if (ret.code === 0) {
+            api.execScript({
+                name: 'newsList',
+                script: 'newsNum();'
+            });
+          }
+        })
+          if (flat) {
+            skipY = 1
+          }
+          var data = {
+            type:types,
+            page:skipY,
+            page_size:10
+          }
+          $http.fnReuestDataNoW(UrlRouter.getNewsList,headers,'get',data,function (ret,err) {
+            isLoadding = false;
+            apiToast.hide();
+            $event.removeTips('tips')
+            $event.deletNotContent('NotcontentID');
+            if (ret.data.data.length == 0 && skipY == 1) {
+                $event.NotContent('body','NotcontentID','../../image/NOnews.png');
+                $apis.html(news_list,'#template',ret.data.data);
+                isLoadding = true;
+                return false;
+            }else {
+                $event.deletNotContent('NotcontentID');
+            }
+            if (ret.code === 0) {
+              if (flat) {
+                skipY += 1;
+                $event.removeTips('tips');
+                $event.deletNotContent('NotcontentID');
+                $apis.html(news_list,'#template',ret.data.data);
+                for (var i = 0; i < $api.domAll('table').length; i++) {
+                  $api.attr($api.domAll('table')[i], 'border', '1');
+                }
+              }else if (ret.data.data.length>0) {
+                skipY += 1;
+                $event.removeTips('tips');
+                $apis.append(news_list,'#template',ret.data.data);
+                $event.deletNotContent('NotcontentID');
+                for (var i = 0; i < $api.domAll('table').length; i++) {
+                  $api.attr($api.domAll('table')[i], 'border', '1');
+                }
+              }else {
+                isLoadding = true;
+                api.toast({
+                    msg: '没有更多数据',
+                    duration: 2000,
+                    location: 'bottom'
+                });
+              }
+          }else {
+              $event.tips('body','网络错误,请链接网络!');
+          }
+        })
+      }else if (types === 'unread') {
+        if (flat) {
+          skipW = 1
+        }
+        var data = {
+          type:types,
+          page:skipW,
+          page_size:10
+        }
+        $http.fnReuestDataNoW(UrlRouter.getNewsList,headers,'get',data,function (ret,err) {
+          isLoadding = false;
+          apiToast.hide();
+          $event.removeTips('tips')
+          $event.deletNotContent('NotcontentID');
+          if (ret.data.data.length == 0 && skipW == 1) {
+              $event.NotContent('body','NotcontentID','../../image/NOnews.png');
+              $apis.html(news_list,'#template',ret.data.data);
+              isLoadding = true;
+              return false;
+          }else {
+              $event.deletNotContent('NotcontentID');
+          }
+          if (ret.code === 0) {
+            if (flat) {
+              skipW += 1;
+              $event.removeTips('tips');
+              $event.deletNotContent('NotcontentID');
+              $apis.html(news_list,'#template',ret.data.data);
+              for (var i = 0; i < $api.domAll('table').length; i++) {
+                $api.attr($api.domAll('table')[i], 'border', '1');
+              }
+            }else if (ret.data.data.length>0) {
+              skipW += 1;
+              $event.removeTips('tips');
+              $apis.append(news_list,'#template',ret.data.data);
+              $event.deletNotContent('NotcontentID');
+              for (var i = 0; i < $api.domAll('table').length; i++) {
+                $api.attr($api.domAll('table')[i], 'border', '1');
+              }
+            }else {
+              isLoadding = true;
+              api.toast({
+                  msg: '没有更多数据',
+                  duration: 2000,
+                  location: 'bottom'
+              });
+            }
+          }else {
+              $event.tips('body','网络错误,请链接网络!');
+          }
+        })
+      }else {
+        if (flat) {
+          skipS = 1
+        }
+        var data = {
+          type:types,
+          page:skipS,
+          page_size:10
+        }
+        $http.fnReuestDataNoW(UrlRouter.getNewsList,headers,'get',data,function (ret,err) {
+          isLoadding = false;
+          apiToast.hide();
+          $event.removeTips('tips')
+          $event.deletNotContent('NotcontentID');
+          if (ret.data.data.length == 0 && skipS == 1) {
+              $event.NotContent('body','NotcontentID','../../image/NOnews.png');
+              $apis.html(news_list,'#template',ret.data.data);
+              isLoadding = true;
+              return false;
+          }else {
+              $event.deletNotContent('NotcontentID');
+          }
+          if (ret.code === 0) {
+            if (flat) {
+              skipS += 1;
+              $event.removeTips('tips');
+              $event.deletNotContent('NotcontentID');
+              $apis.html(news_list,'#template',ret.data.data);
+              for (var i = 0; i < $api.domAll('table').length; i++) {
+                $api.attr($api.domAll('table')[i], 'border', '1');
+              }
+            }else if (ret.data.data.length>0) {
+              skipS += 1;
+              $event.removeTips('tips');
+              $apis.append(news_list,'#template',ret.data.data);
+              $event.deletNotContent('NotcontentID');
+              for (var i = 0; i < $api.domAll('table').length; i++) {
+                $api.attr($api.domAll('table')[i], 'border', '1');
+              }
+            }else {
+              isLoadding = true;
+              api.toast({
+                  msg: '没有更多数据',
+                  duration: 2000,
+                  location: 'bottom'
+              });
+            }
+          }else {
+              $event.tips('body','网络错误,请链接网络!');
+          }
+        })
+      }
+    }
+    // 搜索
+    function getSearchData(name){
+      var data = {
+        type:typeSeacrh,
+        search:name,
+        page_size:'all'
+      }
+      $http.fnReuestDataNoW(UrlRouter.getNewsList,headers,'get',data,function (ret,err) {
+        apiToast.hide();
+        $event.removeTips('tips');
+        $event.deletNotContent('NotcontentID');
+        if (ret.code === 0) {
+          if (ret.data.data.length>0) {
+            $event.removeTips('tips')
+            $apis.html(news_list,'#template',ret.data.data);
+            $event.deletNotContent('NotcontentID');
+            for (var i = 0; i < $api.domAll('table').length; i++) {
+              $api.attr($api.domAll('table')[i], 'border', '1');
+            }
+          }else {
+            $event.removeTips('tips')
+            $apis.html(news_list,'#template',ret.data.data);
+            $event.NotContent('body','NotcontentID','../../image/NOnews.png');
+          }
+        }else {
+            $event.tips('body','网络错误,请链接网络!');
+        }
+      })
+    }
+    // 我的审核工单详情,工单完结详情
+    function wordOrderDe(type,relation_id,id,url,status) {
+      // console.log(JSON.stringify(type));
+      // console.log(JSON.stringify(status));
+      let realtionId = {
+        ID: relation_id,
+        type: type
+      }
+      var name,value,info =[];
+        var str = url;
+        var num=str.indexOf("?");
+        str=str.substr(num+1);
+        var arr=str.split("&");
+        for(var i=0;i < arr.length;i++){
+            num=arr[i].indexOf("=");
+            if(num>0){
+                name=arr[i].substring(0,num);
+                value=arr[i].substr(num+1);
+                this[name]=value;
+                info.push(value)
+            }
+        }
+      // 工单审核状态判断
+      if (type === '工单审核') {
+        $event.openWin('examineMy_win','../wordorder/examineMy_win','','');
+      } else if(type === '工单完结'){
+        $event.openWin('myWordOrderDe_win','../wordorder/myWordOrderDe_win',realtionId,type)
+        // "electric_order":"停送电申请","electric_check":"停送电审核"
+      } else if (type === '停送电申请') {
+        $event.openWin('powerApplyList','../powerOff/powerApplyList','','')
+      } else if (type === '停送电审核') {
+        $event.openWin('powerOffExamine','../powerOff/powerOffExamine','','')
+      }else {
+        $event.openTabLayout('recodeDetails','../browseQrcode/recodeDetails','记录详情',{recordParentId:info[0]});
+      }
+      $http.fnReuestDataNologing(UrlRouter.getRead,headers,'post',{id: id},function(ret,err) {
+        if (ret.code === 0) {
+          api.execScript({
+              name: 'newsList',
+              script: 'newsNum();'
+          });
+          getNewsListFun('');
+        }
+      })
+    }
+</script>

+ 301 - 0
widget/html/news/news_win.html

@@ -0,0 +1,301 @@
+<!doctype html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <meta name="format-detection"content="telephone=no">
+    <title>index</title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" href="../../css/style.css">
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style media="screen">
+        body,html{
+            margin: 0;
+            background: #fff;
+        }
+        .api_layout{
+            height: 100%;
+        }
+        .aui-searchbar{
+            width: 100%;
+            height: 50px;
+            background-color: #efeff4;
+            position: relative;
+        }
+        .aui-searchbar:after{
+          content: "";
+          position: absolute;
+          bottom: 0;
+          left: 0;
+          width: 100%;
+          height: 1px;
+          background: #e7e8eb;
+        }
+        .aui-searchbar .aui-searchbar-btn{
+            color: #fff;
+        }
+        .aui-searchbar-input{
+            background: #fff;
+        }
+        .aui-searchbar-input input{
+            color: #000;
+        }
+        #search-input::placeholder{
+            color: #ccc;
+            font-size: 14px;
+        }
+        .search_ico{
+            width: 16px;
+            height: 16px;
+            display: block;
+            position: absolute;
+            background: url("../../image/search.png") no-repeat;
+            background-size: cover;
+            top: 8px;
+            left: 17px;
+        }
+        .backBtn{
+            margin-left: 5px;
+        }
+        #search-input{
+            font-size: 14px;
+            height: 28px;
+        }
+        .aui-searchbar-input{
+            margin-right: 80px;
+        }
+        .search_btn{
+            position: absolute;
+            bottom: 9px;
+            right: 10px;
+            width: 54px;
+            height: 31px;
+            line-height: 31px;
+            -webkit-border-radius: 50px;
+            -moz-border-radius: 50px;
+            border-radius: 50px;
+            color: #000;
+            background: #fff;
+            font-size: 13px;
+            text-align: center;
+        }
+        .footer_ul{
+            text-align: center;
+            padding: 15px 0;
+            font-size: 16px;
+            font-weight: bold;
+        }
+        .footer{
+            width: 100%;
+        }
+        .footer:after{
+            top: 0;
+        }
+        .footer_ul li:after{
+            content: '';
+            position: absolute;
+            top: 0;
+            right: 0;
+            height: 100%;
+            width: 1px;
+            background: #ebeef3;
+        }
+        .footer_ul li:last-child:after{
+            width:0;
+        }
+        .news_num{
+            width: 20px;
+            height: 20px;
+            line-height: 20px;
+            background-color: #e74e42;
+            color: #fff;
+            position: absolute;
+            top: -8px;
+            left: 7px;
+            text-align: center;
+            -webkit-border-radius: 50%;
+            border-radius: 50%;
+            font-size: 11px;
+            font-style: normal;
+            z-index: 10;
+        }
+    </style>
+</head>
+<body>
+<div class="api_layout flex-wrap flex-vertical">
+  <header class="header-login">
+     <img class="backBtn" src="../../image/btn_back.png" alt="" tapmode onclick="backIndex()">
+     <p class="api_text">消息</p>
+  </header>
+  <div class="aui-searchbar" id="search">
+      <div class="aui-searchbar-input aui-border-radius">
+          <i class="search_ico"></i>
+          <form>
+              <input type="search" placeholder="" id="search-input">
+          </form>
+      </div>
+      <span class="search_btn" onclick="searchNews(inputValue)">搜索</span>
+  </div>
+  <div class="main flex-con">
+
+  </div>
+  <footer class="after-border relative footer">
+      <ul class="flex-wrap footer_ul">
+          <li class="flex-con relative" onclick="clickNews('')">
+              所有消息
+          </li>
+          <li class="flex-con relative" onclick="clickNews('unread')">
+              <i class="news_num" style="display:none"></i>
+              未读消息
+          </li>
+          <li class="flex-con relative" onclick="clickNews('read')">
+              全部标已读
+          </li>
+      </ul>
+  </footer>
+</div>
+</body>
+</html>
+<script type="text/javascript" src="../../script/api.js"></script>
+<!-- <script src="../../script/fastclick.min.js" charset="utf-8"></script> -->
+<script type="text/javascript" src="../../script/config.js"></script>
+<script type="text/javascript">
+var inputValue = '',headers;
+    apiready = function () {
+        $api.fixStatusBar($api.dom('header') );
+        var info = $api.getStorage('data'),
+            token = JSON.parse(info).data.access_token;
+            headers = {
+                "Authorization": "Bearer " + token
+            };
+        newsNum();
+        fnInitUIInput();
+        openFrameNewsList();
+        keybackFun()
+    };
+    function openFrameNewsList(){
+        api.openFrame({
+            name: 'news_frm',
+            url: 'news_frm.html',
+            rect: {
+                x: 0,
+                y: $api.dom('header').offsetHeight+$api.dom('.aui-searchbar').offsetHeight,
+                w: api.winWidth,
+                h: $api.dom('.main').offsetHeight
+            },
+            pageParam: {
+                name: 'test'
+            },
+            bounces: true,
+            bgColor: '#f1f1f1',
+            vScrollBarEnabled: true,
+            hScrollBarEnabled: true
+        });
+    }
+    function backIndex() {
+        api.closeWin();
+        api.sendEvent({
+            name: 'myNews',
+            extra: {
+                key1: 'value1',
+                key2: 'value2'
+            }
+        });
+    }
+    // 监听物理返回键
+    function keybackFun() {
+      api.addEventListener({
+      		name: 'keyback'
+      	}, function(ret, err){
+          api.sendEvent({
+              name: 'myNews',
+              extra: {
+                  key1: 'value1',
+                  key2: 'value2'
+              }
+          });
+          api.closeWin();
+      });
+    }
+    // input
+    function fnInitUIInput() {
+      var searchText = $api.byId('search-input');
+      var rect = $api.offset(searchText);
+      var UIInput = api.require('UIInput');
+      UIInput.open({
+          rect: {
+              x: rect.l,
+              y: rect.t+1,
+              w: rect.w,
+              h: rect.h+1
+          },
+          styles: {
+              bgColor: '#fff',
+              size: 14,
+              color: '#000',
+              placeholder: {
+                  color: '#ccc'
+              }
+          },
+          autoFocus: false,
+          maxRows: 1,
+          placeholder: '搜索',
+          keyboardType: 'default',
+          fixedOn: api.frameName
+      }, function(ret, err) {
+          if (ret) {
+              var uiInputId = ret.id;
+              if (ret.eventType == "change") {
+                  UIInput.value({
+                      id: uiInputId
+                  }, function(ret, err) {
+                      if (ret) {
+                          if (ret.status) {
+                            inputValue = ret.msg;
+                            searchNews(ret.msg);
+                          }
+                      }
+                  });
+              }
+          }
+      });
+    }
+    // 所有消息
+    // 未读消息
+   // 全部标记已读
+   function clickNews(type) {
+     api.execScript({
+         name: 'newsList',
+         frameName: 'news_frm',
+         script: 'getNewsListFun("'+type+'","'+true+'");'
+     });
+     newsNum();
+   }
+    // 搜索
+   function searchNews(name) {
+    //  $api.setStorage('flatSeacrh', true);
+     api.execScript({
+         name: 'newsList',
+         frameName: 'news_frm',
+         script: 'getSearchData("'+name+'");'
+     });
+  }
+  // 消息总数
+  function newsNum() {
+    $http.fnReuestDataNologing(UrlRouter.getNewsNum,headers,'get','',function (ret,err) {
+        if (ret.code === 0) {
+          if (ret.data.unread_num === 0) {
+             $api.css($api.dom('.news_num'), 'display:none');
+             $api.html($api.dom('.news_num'), '');
+          }else if(ret.data.unread_num > 99 || ret.data.unread_num == 99){
+            $api.css($api.dom('.news_num'), 'display:block');
+            $api.html($api.dom('.news_num'), 99);
+          }else {
+            $api.css($api.dom('.news_num'), 'display:block');
+            $api.html($api.dom('.news_num'), ret.data.unread_num);
+          }
+        }
+    })
+  }
+</script>

+ 155 - 0
widget/html/page/addPosonal.html

@@ -0,0 +1,155 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/aui.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style>
+        @media screen and (-webkit-min-device-pixel-ratio:1.5) {
+          .aui-list{
+            background-image:none!important;
+          }
+        }
+        .aui-list.aui-list-in .aui-list-item{
+          background-size:93% 1px;
+        }
+        .aui-list.aui-list-in .aui-list-item:last-child{
+          background-position:0.75rem bottom;
+        }
+        .api_layout .aui-list .aui-list-item{
+          height: 60px;
+          line-height: normal;
+        }
+        .api_layout .aui-list .aui-list-item-inner{
+          height: 60px;
+          line-height: normal;
+        }
+        .aui-list-item-arrow:before{
+          border: 1px solid #939393;
+          border-top: none;
+          border-right: none;
+        }
+        .col_ p{
+            font-size: 15px;
+            color: #121212;
+            width: 85%;
+            display: -webkit-box;	display: -webkit-flex;	display: flex;
+            -webkit-box-orient: vertical;-webkit-flex-flow: column;flex-flow: column;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            white-space: nowrap;
+        }
+        .col_ p span:last-child{
+            font-size: 14px;
+            color: #a7a5bb;
+            margin-top: 3px;
+        }
+        .personal_centerInfo img{
+            width: 50px;
+            height: 50px;
+            margin-right: 10px;
+            border: 1px solid #f2f2f2;
+            border-radius: 50%;
+        }
+        .personal_center span{
+            display: block;
+        }
+        .personal_center span:first-child{
+            font-size: 16px;
+        }
+        .personal_center span:last-child{
+            font-size: 15px;
+            color: #a7a5bb;
+        }
+        .personal_centerInfo{
+            padding: 10px 0 10px 0.75rem ;
+            background: #fff;
+        }
+    </style>
+</head>
+<body>
+<div class="api_layout" id="api_layout">
+    <!-- <div>
+        <div class="personal_centerInfo flex-start">
+            <img src="http://jiewei-icon.oss-cn-beijing.aliyuncs.com/icon/default-avatar.png" alt="">
+            <div class="personal_center">
+                <span>张三</span>
+                <span>李四</span>
+            </div>
+        </div>
+        <ul class="aui-list aui-list-in">
+            <li class="aui-list-item col_">
+                <div class="aui-list-item-inner aui-list-item-arrow">
+                    <p>
+                        <span>页面未测试数据,正式数据为接入</span>
+                        <span>2019-06-11</span>
+                    </p>
+                </div>
+            </li>
+            <li class="aui-list-item col_">
+                <div class="aui-list-item-inner aui-list-item-arrow">
+                  <p>
+                      <span>页面未测试数据,正式数据为接入</span>
+                      <span>2019-06-11</span>
+                  </p>
+                </div>
+            </li>
+            <li class="aui-list-item col_">
+                <div class="aui-list-item-inner aui-list-item-arrow">
+                  <p>
+                      <span>页面未测试数据,正式数据为接入</span>
+                      <span>2019-06-11</span>
+                  </p>
+                </div>
+            </li>
+        </ul>
+    </div> -->
+</div>
+<div class="noText">
+  <img src="../../image/noText.png" alt="">
+</div>
+</body>
+</html>
+<script type="text/template" id="templateQrcode">
+  {{~it:value}}
+  <li class="aui-list-item col_" onclick="QRcodeDetaile('{{=value.id}}','{{=value.title}}')">
+      <div class="aui-list-item-inner aui-list-item-arrow">
+          <p>{{=value.title}}</p>
+      </div>
+  </li>
+  {{~}}
+  </script>
+<script type="text/javascript" src="../../script/api.js"></script>
+<!-- <script src="../../script/aui-toast.js" charset="utf-8"></script> -->
+<!-- <script src="../../script/fastclick.min.js" charset="utf-8"></script> -->
+<script src="../../script/doT.min.js" charset="utf-8"></script>
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+    var toast = new auiToast();
+    apiready = function () {
+        //token
+        var info = $api.getStorage('data'),
+            token = JSON.parse(info).data.access_token;
+    };
+    function seachQrcodeFun1(value) {
+        // var data = {
+        //     title:value,
+        //     departmentId:'',
+        //     pageNumber:0,
+        //     pageSize:0
+        // };
+        // $http.fnReuestData(UrlRouter.seachQrcode,'','get',data,function (ret,err) {
+        //   toast.hide();
+        //   if (ret && ret.code == 200) {
+        //     $apis.html(Qrcode_itme,'#templateQrcode',ret.data)
+        //   }
+        // })
+    }
+    function QRcodeDetaile(pageid,text) {
+      $event.openWin('QrcodeDetaile','../Qrcode/QrcodeDetaile',{pageId:pageid,id:'',departmentId:'',flag:false,title:text},'');
+    }
+</script>

+ 101 - 0
widget/html/page/ceshi001.html

@@ -0,0 +1,101 @@
+<!doctype html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <meta name="format-detection"content="telephone=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/style.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style media="screen">
+      body,html{
+        margin: 0;
+        background: #fff;
+      }
+    </style>
+</head>
+<body>
+  <div class="api_layout">
+    <header class="header-login">
+       <img class="backBtn" src="../../image/btn_back.png" alt="" onclick="backIndex()">
+       <p class="api_text"></p>
+    </header>
+  </div>
+</body>
+</html>
+<script type="text/javascript" src="../../script/api.js"></script>
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+    var toast = new auiToast();
+    apiready = function () {
+        $api.fixStatusBar($api.dom('header') );
+        $api.html($api.dom('.api_text'), api.pageParam.title);
+        detaile(api.pageParam.url);
+        keybackFun();
+        api.addEventListener({
+            name: 'ceshi'
+        }, function(ret, err) {
+          api.closeWin();
+        })
+    };
+    // 详情
+    function detaile(url) {
+      var browser = api.require('webBrowser');
+      browser.openView({
+          url:'http://colliery.nxjiewei.com/test.html',
+          rect: {
+              x: 0,
+              x: 0,
+              y: $api.dom('header').offsetHeight,
+              w: api.winWidth,
+              h: $api.winHeight
+          }
+      }, function(ret, err) {
+          switch (ret.state) {
+              case 0:
+                  break;
+              case 1:
+                  break;
+              case 2:
+                  break;
+              case 3:
+                  break;
+              case 4:
+                  break;
+              default:
+                  break;
+          }
+      });
+    }
+    function backIndex() {
+      var browser = api.require('webBrowser');
+        browser.historyBack(
+            function(ret, err) {
+                if (!ret.status) {
+                    api.closeWin();
+                }
+            }
+        );
+    }
+    // 监听物理返回键
+    function keybackFun() {
+      api.addEventListener({
+      		name: 'keyback'
+      	}, function(ret, err){
+          var browser = api.require('webBrowser');
+            browser.historyBack(
+                function(ret, err) {
+                    if (!ret.status) {
+                        api.closeWin();
+                    }
+                }
+            );
+
+      });
+    }
+
+
+    // 
+</script>

+ 47 - 0
widget/html/page/clearCache.html

@@ -0,0 +1,47 @@
+<!doctype html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <meta name="format-detection"content="telephone=no">
+    <title>index</title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/style.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style media="screen">
+      body,html{
+        margin: 0;
+        background: #fff;
+      }
+    </style>
+</head>
+<body>
+  <div class="api_layout">
+    <header class="header-login">
+       <img class="backBtn" src="../../image/btn_back.png" alt="" tapmode onclick="backIndex()">
+       <p class="api_text">清除缓存</p>
+    </header>
+  </div>
+</body>
+</html>
+<script type="text/javascript" src="../../script/api.js"></script>
+<script type="text/javascript">
+    apiready = function () {
+        $api.fixStatusBar($api.dom('header') );
+        var browser = api.require('webBrowser');
+        browser.openView({
+            url: 'http://debugtbs.qq.com',
+            rect: {
+                x: 0,
+                x: 0,
+                y: $api.dom('header').offsetHeight,
+                w: api.winWidth,
+                h: $api.winHeight
+            }
+        })
+    }
+    function backIndex() {
+      api.closeWin();
+    }
+</script>

+ 528 - 0
widget/html/page/frame0.html

@@ -0,0 +1,528 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0" />
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css" />
+    <link rel="stylesheet" type="text/css" href="../../css/swiper.css">
+    <link rel="stylesheet" type="text/css" href="../../css/style.css" />
+    <link rel="stylesheet" type="text/css" href="../../css/aui.css" />
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style>
+        body {
+            /*background: #fff;*/
+            background: url("../../image/top.png") no-repeat;
+            background-size: 100%;
+            /*padding-top: 40px;*/
+        }
+
+        .aui-grid-label {
+            font-size: 14px !important;
+            width: 90%;
+            margin: auto;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            white-space: nowrap;
+        }
+
+        .swiper-slide {
+            height: 200px
+        }
+        .swiper-slide a{
+          width: 100%;
+        }
+        .swiper-slide img{
+            -webkit-border-radius: 10px;
+            -moz-border-radius: 10px;
+            border-radius: 10px;
+            width: 100%;
+            height: 200px;
+            object-fit: cover;
+        }
+
+        .api_swiper_wrap .swiper-pagination-fraction {
+            bottom: 1px;
+        }
+
+        .api_page_text {
+            bottom: 0;
+        }
+
+        .api_grids {
+            padding: 0 20px 0 10px;
+        }
+
+        .api_grids .aui-col-xs-3 {
+            font-size: 12px;
+            display: inline-block;
+            height: 42px;
+            line-height: 42px;
+            text-align: center;
+            color: #009fe8;
+            border: 1px solid #009fe8;
+            border-radius: 10px;
+            width: auto;
+            padding: 0;
+            margin-bottom: 20px;
+        }
+
+        .api_grids .aui-grid-label {
+            margin-top: 0;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            white-space: nowrap;
+        }
+
+        .height_duty {
+            height: 45px;
+            overflow: hidden;
+            -webkit-box-sizing: border-box;
+            -moz-box-sizing: border-box;
+            box-sizing: border-box;
+        }
+
+        .aui-grid [class*=aui-col-] {
+            padding: 0
+        }
+
+        .api_intelligence {
+            margin-top: 20px;
+        }
+    </style>
+</head>
+
+<body>
+    <div class="api_layout" id="api_layout">
+        <div>
+            <div class="duty">
+                <p class="duty_title"><span id="duty_title"></span> <i class="duty_icon icon"></i></p>
+                <div class="height_duty" id="box">
+                    <p class="duty_content" id="ul1"></p>
+                    <p class="duty_content" id="ul2"></p>
+                </div>
+            </div>
+            <!--banner-->
+            <div class="api_swiper_wrap">
+                <div class="swiper-container">
+                    <div class="swiper-wrapper" id="age_list">
+
+                    </div>
+                    <div class="swiper-pagination swiper-pagination-fraction" id="api_page"></div>
+                </div>
+            </div>
+            <!--新闻-->
+            <div class="api_news" id="api_newsList"></div>
+            <!--智慧-->
+            <div class="api_intelligence">
+                <section class="aui-grid" id="api_grid">
+                    <div class="aui-row" style="padding:0 10px;" id="imgNav">
+
+                </div>
+            </section>
+        </div>
+        <div class="api_line"></div>
+        <!-- 基层区队 -->
+        <div id="DistrictTeam"></div>
+    </div>
+</body>
+
+</html>
+<!-- 轮播 -->
+<script type="text/template" id="template">
+    {{~it:value}}
+    <div class="swiper-slide" onclick="openUrlBanner('{{=value.jumpURL}}')">
+        <a href="javascript:;">
+            <img src="{{=value.imgURL}}" alt="">
+        </a>
+        <div class="api_page_text">
+            <p class="api_banner_info">{{=value.title}}</p>
+        </div>
+    </div>
+    {{~}}
+</script>
+<!-- 新闻 -->
+<script type="text/template" id="templateNews">
+    <h1 class="api_title">
+      新闻动态
+      <i class="icon News_icon"></i>
+      <span class="api_more" onclick="openNewsList('')">更多</span>
+  </h1>
+    <ul class="api_newsList">
+        {{~it:value}}
+        <li onclick="openURl('{{=value.detail_url}}','{{=value.title}}')">
+            <img src="{{=value.main_img}}" alt="">
+            <p>{{=value.title}}</p>
+        </li>
+        {{~}}
+    </ul>
+    <div class="api_line"></div>
+</script>
+<!-- 智慧枣泉煤矿 -->
+<!-- 3 -->
+<script type="text/template" id="templateNav">
+    {{~it:value}}
+    <div class="aui-col-xs-4 item" onclick="openURl('{{=value.link}}','{{=value.title}}');">
+        <img src="{{=value.icon}}" alt="">
+        <div class="aui-grid-label">{{=value.title}}</div>
+    </div>
+    {{~}}
+</script>
+<!-- 4 -->
+<script type="text/template" id="templateNav_Four">
+    {{~it:value}}
+    <div class="aui-col-xs-3 item" onclick="openURl('{{=value.link}}','{{=value.title}}');">
+        <img src="{{=value.icon}}" alt="">
+        <div class="aui-grid-label">{{=value.title}}</div>
+    </div>
+    {{~}}
+</script>
+<!-- 区队 -->
+<script type="text/template" id="templateDistrict">
+    {{ for (var i = 0;i
+    <it.length;i++) { }} <div class="api_office">
+        <h1 class="api_title" style="margin-bottom: 13px">
+            {{=it[i].title}}
+            <img src="{{=i%2 == 0?'../../image/icon01.png':'../../image/edit.png'}}" alt="">
+        </h1>
+        <section class="aui-grid api_grids">
+            <div class="aui-row">
+                {{ for (var j =0 ;j
+                <it[i].children.length;j++) { }} <div class="aui-col-xs-3 api_col" onclick="openURl('{{=it[i].children[j].link}}','{{=it[i].children[j].title}}');">
+                    <div class="aui-grid-label">{{=it[i].children[j].title}}</div>
+            </div>
+            {{ } }}
+            </div>
+        </section>
+        </div>
+        {{ } }}
+</script>
+<script type="text/javascript" src="../../script/api.js"></script>
+<script type="text/javascript" src="../../script/swiper.min.js"></script>
+<script src="../../script/doT.min.js" charset="utf-8"></script>
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+    var toast = new auiToast(),
+        isFlat = true,
+        userId = "",
+        departmentId = "",
+        headers ={},
+        token = '';
+    $apis.swiper('.swiper-container', true, 'fraction');
+    apiready = function() {
+        api.closeFrame({
+            name: 'frame3'
+        });
+        var info = $api.getStorage('data')
+        userId = JSON.parse(info).data.user.staff_num;
+        token = JSON.parse(info).data.access_token;
+        headers = {
+            "Authorization": "Bearer " + token
+        };
+        departmentId = JSON.parse(info).data.user.section_id;
+        // 监听app从后台返回前台刷新
+        api.addEventListener({
+            name: 'resume'
+        }, function(ret, err) {
+            getBannerData()
+            getNewsData()
+            getNoticeData()
+            getImgNavData()
+            getDistrictteamData()
+        });
+        // 每次打开app刷新一次
+        if (isFlat) {
+            getBannerData()
+            getNewsData()
+            getNoticeData()
+            getImgNavData()
+            getDistrictteamData()
+            isFlat = false;
+        }
+        // banner
+        getBannerCache();
+        // 公告
+        getNoticeDataCache();
+        //news
+        getNewsDataCache();
+        //图片nav
+        getImgNavDataCache();
+        //区队
+        getDistrictteamDataCache();
+        // 下拉刷新
+        setCustomRefreshHeader();
+    };
+    // 下拉刷新
+    function setCustomRefreshHeader() {
+        api.setRefreshHeaderInfo({
+            bgColor: '#f2f2f2',
+            textColor: '#000',
+            textDown: '下拉刷新...',
+            textUp: '松开刷新...'
+        }, function(ret, err) {
+            getBannerData()
+            getNewsData()
+            getNoticeData()
+            getImgNavData()
+            getDistrictteamData()
+        });
+    }
+
+    function flexWidth() {
+        var cols = document.getElementsByClassName('api_col');
+        for (var i = 0; i < cols.length; i++) {
+            cols[i].style.width = (api.frameWidth / 4 - 19) + 'px';
+            cols[i].style.marginLeft = 10 + 'px'
+        }
+    }
+    // openUrlBanner
+    function openUrlBanner(urls, titles) {
+        $event.openWin('openURlId1', 'openUrlBanner', {
+            url: urls,
+            title: titles
+        }, '');
+    }
+    // openURl
+    function openURl(urls, titles) {
+        var appU = urls.split('//');
+        if (appU && appU[1] == 'app:') {
+            switch (appU[2]) {
+              case '../mail/organization':
+                $event.openWin('organization_win', appU[2], '', '');
+                break;
+              case '../material/searchMaterialsStorage':
+                $event.openTabLayout('searchMaterialsStorage',appU[2],'物资查询','')
+                break;
+            }
+        } else {
+            var name, value, info = [],
+                Qrurl = urls;
+            var str = Qrurl;
+            var num = str.indexOf("?");
+            str = str.substr(num + 1);
+            var arr = str.split("&");
+            for (var i = 0; i < arr.length; i++) {
+                num = arr[i].indexOf("=");
+                if (num > 0) {
+                    name = arr[i].substring(0, num);
+                    value = arr[i].substr(num + 1);
+                    this[name] = value;
+                    info.push(value)
+                }
+            }
+            if (info[2] != "" && info[2]) {
+                $event.openWin('browseQrcode_win', '../browseQrcode/browseQrcode_win', {
+                    pageId: info[2],
+                    title: titles
+                }, '');
+                var data = {
+                    "pageId": info[2],
+                    "userId": userId,
+                    "status": "CREATE"
+                }
+                $http.requestData(UrlRouter.getAddPageUserTime, 'post', data)
+                .then(res => {
+                  if(res.code === '200') {
+                    api.sendEvent({
+                        name: 'pageUserTimeDefault',
+                        extra: {
+                            id: res.data.id,
+                            createDate: res.data.createDate
+                        }
+                    });
+                  }
+                })
+            } else {
+                $event.openWin('openURlId', 'openUrl', {
+                    url: urls,
+                    title: titles
+                }, '');
+            }
+        }
+    }
+    // banner
+    function getBannerData() {
+        $http.requestData(UrlRouter.bannerApi, 'get', '')
+            .then(ret => {
+                if (ret.code === 0) {
+                    $apis.html(age_list, '#template', ret.data.data);
+                    $apis.writeFile($apis.CACHE_DIR('banner'), ret.data.data);
+                    mySwiper.destroy(true, true);
+                    $apis.swiper('.swiper-container', true, 'fraction');
+                    mySwiper.init();
+                } else if (ret.code === 401) {
+                    api.alert({
+                        title: '提示',
+                        msg: '登录过期,重新登录',
+                    }, function(ret, err) {
+                        var index = ret.buttonIndex;
+                        if (index == 1) {
+                            $api.clearStorage();
+                            api.setStatusBarStyle({
+                                color: 'rgba(0,0,0,0)',
+                                style: 'light'
+                            });
+                            api.closeWin({
+                                name: 'index'
+                            });
+                        }
+                    });
+                }
+            })
+            .catch(err => {})
+    }
+
+    function getBannerCache() {
+        $apis.readFile($apis.CACHE_DIR('banner'), function(ret, err) {
+            if (ret.status) {
+                $apis.html(age_list, '#template', JSON.parse(ret.data));
+                mySwiper.destroy(true, true);
+                $apis.swiper('.swiper-container', true, 'fraction');
+                mySwiper.init();
+            }else{
+              getBannerData()
+            }
+        });
+    }
+    // 新闻
+    function getNewsDataCache() {
+        $apis.readFile($apis.CACHE_DIR('news'),function (ret,err) {
+            if( ret.status ){
+                $apis.html(api_newsList,'#templateNews',JSON.parse(ret.data));
+            }else{
+                getNewsData()
+            }
+        })
+    }
+
+    function getNewsData() {
+        $http.requestData(UrlRouter.nwesApi, 'get', '')
+            .then(ret => {
+                if (ret.code === 0) {
+                    api.refreshHeaderLoadDone();
+                    $apis.html(api_newsList, '#templateNews', ret.data.data);
+                    $apis.writeFile($apis.CACHE_DIR('news'), ret.data.data);
+                }
+            })
+            .catch(err => {})
+    }
+    //公告
+    function getNoticeDataCache() {
+        $apis.readFile($apis.CACHE_DIR('Notice'), function(ret, err) {
+            if (ret.status) {
+                if (JSON.parse(ret.data).message == "暂无公告") {
+                    $api.html($api.byId('duty_title'), JSON.parse(ret.data).title);
+                    $api.html($api.dom('#ul1'), JSON.parse(ret.data).message);
+                } else {
+                    $api.html($api.byId('duty_title'), JSON.parse(ret.data).title);
+                    $api.html($api.dom('#ul1'), JSON.parse(ret.data).content);
+                    textRoll(200);
+                }
+            } else {
+                getNoticeData()
+            }
+        })
+    }
+
+    function getNoticeData() {
+        $http.requestData(UrlRouter.NoticeApi, 'get', '')
+            .then(ret => {
+                if (ret.code === 0) {
+                    if (ret.data.message == "暂无公告") {
+                        $api.html($api.byId('duty_title'), ret.data.title);
+                        api.refreshHeaderLoadDone();
+                        $api.html($api.dom('#ul1'), ret.data.message);
+                        $apis.writeFile($apis.CACHE_DIR('Notice'), ret.data)
+                    } else {
+                        $api.html($api.byId('duty_title'), ret.data.title);
+                        $api.html($api.dom('#ul1'), ret.data.content);
+                        $apis.writeFile($apis.CACHE_DIR('Notice'), ret.data)
+                    }
+                }
+            })
+            .catch(err => {})
+    }
+    textRoll(200);
+    // 图片导航
+    function getImgNavDataCache() {
+        $apis.readFile($apis.CACHE_DIR('ImgNav'), function(ret, err) {
+            if (ret.status) {
+                if (JSON.parse(ret.data).index_link_num == 3) {
+                    $apis.html(imgNav, '#templateNav', JSON.parse(ret.data).data);
+                } else {
+                    $apis.html(imgNav, '#templateNav_Four', JSON.parse(ret.data).data);
+                }
+            } else {
+                getImgNavData()
+            }
+        })
+    }
+
+    function getImgNavData() {
+        $http.requestData(UrlRouter.ImgApi, 'get', '')
+            .then(ret => {
+                if (ret.code === 0) {
+                    api.refreshHeaderLoadDone();
+                    if (ret.data.index_link_num == 3) {
+                        $apis.html(imgNav, '#templateNav', ret.data.data);
+                    } else {
+                        $apis.html(imgNav, '#templateNav_Four', ret.data.data);
+                    }
+                    $apis.writeFile($apis.CACHE_DIR('ImgNav'), ret.data);
+                }
+            })
+            .catch(err => {})
+    }
+    // 区队
+    function getDistrictteamDataCache() {
+        $apis.readFile($apis.CACHE_DIR('District'), function(ret, err) {
+            if (ret.status) {
+                $apis.html(DistrictTeam, '#templateDistrict', JSON.parse(ret.data));
+                flexWidth();
+            } else {
+                getDistrictteamData()
+            }
+        })
+    }
+
+    function getDistrictteamData() {
+        $http.requestData(UrlRouter.DistrictteamApi, 'get', '')
+            .then(ret => {
+                if (ret.code === 0) {
+                    api.refreshHeaderLoadDone();
+                    $apis.html(DistrictTeam, '#templateDistrict', ret.data);
+                    $apis.writeFile($apis.CACHE_DIR('District'), ret.data);
+                    flexWidth();
+                }
+            })
+            .catch(err => {})
+    }
+    // 文字无缝滚动
+    function textRoll(t) {
+        var ul1 = document.getElementById("ul1");
+        var ul2 = document.getElementById("ul2");
+        var box = document.getElementById("box");
+        var timer = '';
+        if (ul1.offsetHeight > box.offsetHeight) {
+            ul2.innerText = ul1.innerText;
+        }
+        box.scrollTop = 0;
+        timer = setInterval(rollStart, t);
+    }
+
+    function rollStart() {
+        if (document.getElementById("box").scrollTop > document.getElementById("ul1").scrollHeight) {
+            document.getElementById("box").scrollTop = 0;
+        } else {
+            document.getElementById("box").scrollTop++;
+        }
+    }
+    // open新文列表
+    function openNewsList(urls) {
+        $event.openWin('openNews', 'openNews', {
+            url: urls
+        }, '');
+    }
+</script>

+ 603 - 0
widget/html/page/frame1.html

@@ -0,0 +1,603 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0" />
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title>消息</title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css" />
+    <link rel="stylesheet" type="text/css" href="../../css/style.css" />
+    <link rel="stylesheet" href="../../css/toast.css">
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style>
+        body,
+        html {
+            background: #fff;
+        }
+
+        .api_news_item .news_img {
+            background: none;
+            background-color: #009fe8;
+            -webkit-border-radius: 50%;
+            -moz-border-radius: 50%;
+            border-radius: 50%;
+            font-size: 12px;
+            line-height: 15px;
+            text-align: center;
+            padding: 8px 10px;
+            box-sizing: border-box;
+            color: #fff;
+        }
+
+        .api_layout {
+            padding-bottom: 30px;
+        }
+        /*tab*/
+
+        .tab-box {
+            padding: 16px;
+        }
+
+        .tab-item {
+            height: 105px;
+            display: flex;
+            justify-content: space-around;
+            align-items: center;
+        }
+
+        .tab-item li {
+            text-align: center;
+            color: #BDC3C7;
+            font-size: 16px;
+            cursor: pointer;
+            transition: .5s;
+            position: relative;
+        }
+
+        .tab-item li span {
+            font-size: 14px;
+            color: #BDC3C7;
+            transition: .5s;
+        }
+
+        .tab-item img {
+            width: 35px;
+            height: 35px;
+            transition: .5s;
+        }
+
+        .tab-item .tab-avtive {
+            font-size: 18px;
+            color: #2C3E50;
+            transition: .5s;
+        }
+
+        .tab-item .tab-avtive img {
+            width: 45px;
+            height: 45px;
+            transition: .5s;
+        }
+
+        .tab-item .tab-avtive span {
+            font-size: 15px;
+            transition: .5s;
+        }
+        /*闭环管理*/
+
+        .close-loop {
+            display: none;
+        }
+
+        .close-loop-box {
+            padding: 8px 10px;
+            /*background: */
+        }
+
+        .close-loop-box li {
+            display: flex;
+            justify-content: flex-start;
+            align-items: center;
+            height: 84px;
+            box-shadow: 0 2px 4px 0 #a6a6a6;
+            border-radius: 5px;
+            margin-bottom: 10px;
+            flex-wrap: nowrap;
+            position: relative;
+        }
+
+        .time-name {
+            background: #50A1FF;
+            height: 100%;
+            flex: 0 0 84px;
+            border-radius: 5px;
+            padding: 5px 10px;
+            box-sizing: border-box;
+            width: 84px;
+        }
+
+        .time-name span {
+            color: #fff;
+            font-weight: bold;
+        }
+
+        .time-name .lt {
+            display: block;
+            font-size: 20px;
+        }
+
+        .time-name .rt {
+            font-size: 16px;
+            text-align: right;
+            display: block;
+        }
+
+        .time-name p {
+            width: 100%;
+            color: #fff;
+            font-size: 17px;
+            overflow: hidden;
+            text-overflow: clip;
+            white-space: nowrap;
+            text-align: center;
+        }
+
+        .info {
+            padding: 5px 10px;
+            font-size: 14px;
+            color: #2C3E50;
+            width: 100%;
+            overflow: hidden;
+        }
+
+        .info p {
+            width: 100%;
+            padding-bottom: 5px;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            white-space: nowrap;
+            display: flex;
+            align-items: center;
+        }
+
+        .info span {
+            display: inline-block;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            white-space: nowrap;
+            width: 40%;
+        }
+
+        .loop-ico {
+            width: 19px;
+            height: 25px;
+            background: url(../../icon/loop_ico.png) center no-repeat;
+            background-size: contain;
+            position: absolute;
+            top: 0;
+            right: 13px;
+        }
+        /*自定义加载*/
+
+        .loadings {
+            width: 100%;
+            height: 100%;
+            position: fixed;
+            top: 30%;
+            left: 0;
+            z-index: 9999;
+            background: rgba(255, 255, 255, 0.1);
+        }
+
+        .loadings img {
+            z-index: 9999;
+            width: 40px;
+            height: 40px;
+            position: absolute;
+            top: -50%;
+            left: 0;
+            bottom: 0;
+            right: 0;
+            margin: auto;
+        }
+        /*徽章*/
+
+        .badge,
+        .loop-Badge {
+            position: absolute;
+            top: -10px;
+            right: 15px;
+            width: 20px;
+            height: 20px;
+            line-height: 20px;
+            border-radius: 50%;
+            text-align: center;
+            background: #E74C3C;
+            color: #fff;
+            font-size: 11px;
+            font-style: normal;
+        }
+    </style>
+</head>
+
+<body>
+    <div class="api_layout">
+        <div class="tab-box">
+            <ul class="tab-item">
+                <li class="only-li tab-avtive" id="closedLoopManagement">
+                    <img src="../../icon/bihuan.png" alt="">
+                    <p>闭环管理</p>
+                    <span>PDCA循环管控</span>
+                    <i class="loop-Badge hide"></i>
+                </li>
+                <li>
+                    <img src="../../icon/recodeJ.png" alt="">
+                    <p>记录合集</p>
+                    <span>全部消息一览</span>
+                    <i class="badge hide"></i>
+                </li>
+                <li>
+                    <img src="../../icon/myrecode.png" alt="">
+                    <p>我的记录</p>
+                    <span>记录日志一览</span>
+                </li>
+            </ul>
+        </div>
+        <!-- 闭环管理 -->
+        <div class="close-loop close-loop-admin">
+            <p class="api_title_text" style="height:15px"></p>
+            <ul class="close-loop-box" id="close_loop"></ul>
+        </div>
+        <!-- 我的记录 -->
+        <div class="close-loop my-close-loop">
+            <p class="api_title_text" style="height:15px"></p>
+            <ul class="close-loop-box" id="my_close_loop"></ul>
+        </div>
+        <!-- 记录合集 -->
+        <div id="depList"></div>
+    </div>
+    <div class="noText hide">
+        <img src="../../image/noText.png" alt="">
+    </div>
+    <!-- 自定义加载效果 -->
+    <div class="loadings hide">
+        <img src="../../icon/loading.gif" alt="">
+    </div>
+</body>
+
+</html>
+<!-- 记录合集列表 -->
+<script type="text/template" id="templatePublic">
+    <div class="api_news_items api_news_public">
+        <p class="api_title_text">公共:</p>
+        <ul class="api_news_item">
+            {{~it:value:index}} {{?value.departmentId == 'root'}}
+            <li onclick="openQRcodeInfo('{{=value.departmentId}}','{{=value.departmentName}}')">
+                <span class="news_img">{{=value.departmentName.substring(0,4)}}</span>
+                <div class="api_titles">
+                    <span class="api_news_title">{{=value.departmentName}}</span>
+                    <p>
+                        <i class="api_ico"></i> {{=value.desc}}
+                    </p>
+                </div>
+                <span class="api_date">{{=value.time}}</span> {{?value.messageCount != 0}}
+                <span class="api_news_num">{{=value.messageCount}}</span> {{?}}
+                <span class="api_ceil"></span>
+            </li>
+            {{?}} {{~}}
+        </ul>
+    </div>
+    <div class="api_news_items api_news_office">
+        <p class="api_title_text">机关部室:</p>
+        <ul class="api_news_item">
+            {{~it:value:index}} {{?value.departmentId != 'root'}}
+            <li onclick="openQRcodeInfo('{{=value.departmentId}}','{{=value.departmentName}}')">
+                <span class="news_img">{{=value.departmentName.substring(0,4)}}</span>
+                <div class="api_titles">
+                    <span class="api_news_title">{{=value.departmentName}}</span>
+                    <p>
+                        <i class="api_ico"></i> {{=value.desc}}
+                    </p>
+                </div>
+                <span class="api_date">{{=value.time}}</span> {{?value.messageCount != 0}}
+                <span class="api_news_num">{{=value.messageCount}}</span> {{?}}
+                <span class="api_ceil"></span>
+            </li>
+            {{?}} {{~}}
+        </ul>
+    </div>
+
+</script>
+<!-- 闭环管理 -->
+<script type="text/template" id="templateCloseLoop">
+    {{~it:value:index}}
+    <li onclick="openRecordDe('{{=value.recordParentId}}')" style="{{=value.colorStatus?'border:1px solid #E74C3C':''}}">
+        <div class="time-name" style="background:{{=value.colorStatus?'#E74C3C':'#50A1FF'}}">
+            <span class="lt">{{=value.createDate.substring(5,7)}}月</span>
+            <span class="rt">{{=value.createDate.substring(8,10)}}</span>
+            <p class="name">{{=value.createName}}</p>
+        </div>
+        <div class="info">
+            <p class="templateName">名称:{{=value.templateName}}</p>
+            {{?value.recordStatusInstanceList !== ''}} {{ for(var i= 0;i
+            <value.recordStatusInstanceList.length;i++) { }} {{?i<2}} <p> {{=value.recordStatusInstanceList[i].statusName}}:
+                <span style="color:#E74C3C">{{=value.recordStatusInstanceList[i].recordStatusInstanceValue}}</span>
+                </p>
+                {{?}} {{ } }} {{?}}
+        </div>
+        <i class="loop-ico"></i>
+    </li>
+    {{~}}
+</script>
+<!-- 我的记录 -->
+<script type="text/template" id="templateMyCloseLoop">
+    {{~it:value:index}}
+    <li onclick="openRecordDe('{{=value.recordParentId}}')">
+        <div class="time-name">
+            <span class="lt">{{=value.createDate.substring(8,10)}}</span>
+            <span class="rt">{{=value.createDate.substring(5,7)}}月</span>
+            <p class="name">{{=value.createName}}</p>
+        </div>
+        <div class="info">
+            <p class="templateName">名称:{{=value.templateName}}</p>
+            {{?value.recordStatusInstanceList !== ''}} {{ for(var i= 0;i
+            <value.recordStatusInstanceList.length;i++) { }} {{?i<2}} <p>{{=value.recordStatusInstanceList[i].statusName}}:<span style="color:#E74C3C">{{=value.recordStatusInstanceList[i].recordStatusInstanceValue}}</span></p>
+                {{?}} {{ } }} {{?}}
+        </div>
+        <i class="loop-ico"></i>
+    </li>
+    {{~}}
+</script>
+<script type="text/javascript" src="../../script/api.js"></script>
+<script type="text/javascript" src="../../script/doT.min.js"></script>
+<script type="text/javascript" src="../../script/zepto.js"></script>
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+    var skip = 1,
+        jobNum = "",
+        isLoadding = false,
+        isLoaddingMy = false,
+        closeLoopNumber = 0;
+        departmentId = ''
+    var skipCloseLoop = 1
+    apiready = function() {
+            var info = $api.getStorage('data');
+            jobNum = JSON.parse(info).data.user.staff_num;
+            departmentId = JSON.parse(info).data.user.section_id
+            getCloseLoop()
+            newsBadge(jobNum)
+            // 闭环管理的UI列表渲染
+            $('.close-loop-admin').show()
+            api.addEventListener({
+                name: 'myEvent'
+            }, function(ret, err) {
+                $('#closedLoopManagement').addClass('tab-avtive').siblings().removeClass('tab-avtive')
+                isLoadding = true
+                isLoaddingMy = true
+                $('.close-loop-admin').show()
+                $('.my-close-loop').hide()
+                $('#depList').hide()
+                getCloseLoop()
+                newsBadge(jobNum)
+            });
+            api.addEventListener({
+                name: 'scrolltobottom',
+                extra: {
+                    threshold: 0 //设置距离底部多少距离时触发,默认值为0,数字类型
+                }
+            }, function(ret, err) {
+                if (!isLoadding) {
+                    getCloseLoop(true);
+                }
+                if (!isLoaddingMy) {
+                    getMyCloseLoop()
+                }
+            })
+        }
+        // 记录合集列表
+    function getNewsDatas() {
+        $api.removeCls($api.dom('.loadings'), 'hide');
+        $http.requestData(UrlRouter.findMessageApi + jobNum, 'get', '')
+            .then(ret => {
+                api.refreshHeaderLoadDone();
+                $api.addCls($api.dom('.noText'), 'hide');
+                if (ret.code === '200') {
+                    // getChangMessageList(); //已读二维码和记录
+                    $apis.html(depList, '#templatePublic', ret.data);
+                    $api.addCls($api.dom('.noText'), 'hide');
+                } else {
+                    $api.removeCls($api.dom('.noText'), 'hide');
+                }
+                $api.addCls($api.dom('.loadings'), 'hide');
+            })
+            .catch(err => {
+                $api.addCls($api.dom('.loadings'), 'hide');
+                // $api.addCls($api.dom('.noText'), 'hide');
+            })
+    }
+
+    // 不同部门消息数量变化
+    function differentMsgCount(departmentId) {
+      $http.requestData(UrlRouter.getChangMessageDepartmentIdList+`?userId=${jobNum}&departmentId=${departmentId}`, 'get', '')
+          .then(ret => {
+            // console.log(JSON.stringify(ret));
+          })
+          .catch(err => {
+
+          })
+    }
+
+    // 详情
+    function openQRcodeInfo(id, title) {
+        differentMsgCount(id);
+        newsBadge(jobNum)
+        api.openWin({
+            slidBackEnabled: 'false',
+            reload: true,
+            name: 'QrcodeRecodeList',
+            url: '../Qrcode/QrcodeRecodeList.html',
+            pageParam: {
+                depID: id,
+                title: title
+            },
+            animation: {
+                type: 'fade',
+                duration: 450
+            }
+        });
+    }
+    // 已读消息 二维码
+    function getChangMessageList() {
+        $http.requestData(UrlRouter.getChangMessageList + jobNum, 'get', '')
+            .then(ret => {})
+            .catch(err => {})
+    }
+    // 点击tab切换
+    $('.tab-item').on('click', 'li', function() {
+            $(this).addClass('tab-avtive').siblings().removeClass('tab-avtive')
+            if ($(this).index() === 0) {
+                isLoaddingMy = true
+                isLoadding = false
+                $api.addCls($api.dom('.noText'), 'hide');
+                $('.close-loop-admin').show()
+                $('#depList').hide()
+                $('.my-close-loop').hide()
+                skipCloseLoop = 1
+                    // 闭环管理
+                getCloseLoop()
+            } else if ($(this).index() === 1) {
+                isLoadding = true
+                isLoaddingMy = true
+                $api.addCls($api.dom('.noText'), 'hide');
+                $('.close-loop-admin').hide()
+                $('.my-close-loop').hide()
+                $('#depList').show()
+                    // 记录合集
+                // $("#close_loop li").remove()
+                // getCloseLoop()
+                // 解决append 方法由于数据过慢 或者渲染慢 造成的重复渲染
+                getNewsDatas()
+            } else {
+                isLoadding = true
+                isLoaddingMy = false
+                $api.addCls($api.dom('.noText'), 'hide');
+                $('.close-loop-admin').hide()
+                $('#depList').hide()
+                $('.my-close-loop').show()
+                skip = 1
+                    // 我的记录
+                // $("#close_loop li").remove()
+                // getCloseLoop()
+                getMyCloseLoop()
+            }
+        })
+        // 闭环记录列表
+    function getCloseLoop() {
+        $api.removeCls($api.dom('.loadings'), 'hide');
+        var param = {
+            pageNumber: skipCloseLoop,
+            pageSize: 20
+        }
+        $http.requestData(UrlRouter.getPageRecordInstaneClosedLoop, 'get', param)
+            .then(ret => {
+                $api.addCls($api.dom('.loadings'), 'hide');
+                if (ret.data.length == 0 && skipCloseLoop == 1) {
+                    $api.removeCls($api.dom('.noText'), 'hide');
+                    return false;
+                } else {
+                    $api.addCls($api.dom('.noText'), 'hide');
+                }
+                if (ret.data.length > 0) {
+                    skipCloseLoop += 1;
+                    $apis.html(close_loop, '#templateCloseLoop', ret.data);
+                    $api.addCls($api.dom('.noText'), 'hide');
+                    // 闭环列表的消息总数
+                    closeLoopNumber = ret.count
+                    closeLoopBadge()
+                } else {
+                    isLoadding = true;
+                    $api.addCls($api.dom('.noText'), 'hide');
+                    api.toast({
+                        msg: '没有更多数据',
+                        duration: 2000,
+                        location: 'bottom'
+                    });
+                }
+            })
+            .catch(err => {
+                $api.addCls($api.dom('.loadings'), 'hide');
+                $api.removeCls($api.dom('.noText'), 'hide');
+            })
+    }
+    // 我的记录列表
+    function getMyCloseLoop() {
+        $api.removeCls($api.dom('.loadings'), 'hide');
+        var param = {
+            pageNumber: skip,
+            pageSize: 20,
+            createBy: jobNum
+        }
+        $http.requestData(UrlRouter.getPageRecordInstanCreateBy, 'get', param)
+            .then(ret => {
+                $api.addCls($api.dom('.loadings'), 'hide');
+                if (ret.data.length == 0 && skip == 1) {
+                    $api.removeCls($api.dom('.noText'), 'hide');
+                    return false;
+                } else {
+                    $api.addCls($api.dom('.noText'), 'hide');
+                }
+                if (ret.data.length > 0) {
+                    skip += 1;
+                    $apis.append(my_close_loop, '#templateMyCloseLoop', ret.data);
+                } else {
+                    isLoaddingMy = true;
+                    api.toast({
+                        msg: '没有更多数据',
+                        duration: 2000,
+                        location: 'bottom'
+                    });
+                }
+            })
+            .catch(err => {
+                $api.addCls($api.dom('.loadings'), 'hide');
+                $api.removeCls($api.dom('.noText'), 'hide');
+            })
+    }
+    // 记录详情
+    function openRecordDe(id) {
+        $event.openTabLayout('recodeDetails' + Math.random(), '../browseQrcode/recodeDetails', '记录详情', {
+            recordParentId: id
+        });
+    }
+    // 消息徽章
+    function newsBadge(id) {
+        var NVTabBar = api.require('NVTabBar');
+        $http.fnReuestDataNologing(UrlRouter.findMessageCount + id, '', 'get', '', function(ret, err) {
+            if (ret.data && ret.data > 99) {
+                $('.badge').show()
+                $('.badge').html(ret.data > 99 ? '99' : ret.data)
+            }
+            if (ret.data && ret.data < 99 && ret.data != 0) {
+                $('.badge').show()
+                $('.badge').html(ret.data)
+            }
+            if (ret.data === 0) {
+                $('.badge').hide()
+            }
+        })
+    }
+    // 闭环管理消息徽章
+    function closeLoopBadge() {
+        if (closeLoopNumber && closeLoopNumber > 99) {
+            $('.loop-Badge').show()
+            $('.loop-Badge').html(closeLoopNumber > 99 ? '99' : closeLoopNumber)
+        }
+        if (closeLoopNumber && closeLoopNumber < 99 && closeLoopNumber != 0) {
+            $('.loop-Badge').show()
+            $('.loop-Badge').html(closeLoopNumber)
+        }
+        if (closeLoopNumber === 0) {
+            $('.loop-Badge').hide()
+        }
+    }
+</script>

+ 430 - 0
widget/html/page/frame2.html

@@ -0,0 +1,430 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0" />
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title>工作台</title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css" />
+    <link rel="stylesheet" href="../../css/animate.css">
+    <link rel="stylesheet" href="../../css/style.css">
+    <style>
+        body,
+        html {
+            background: rgba(243, 243, 243, 1)
+        }
+
+        .banner img {
+            width: 100%;
+        }
+        /*天气*/
+        /*.weather-wrap{
+            padding: 21px 0;
+        }*/
+        /*nav*/
+
+        .nav-itme {
+            padding: 15px 20px 15px 15px;
+            background: #fff;
+            margin-bottom: 2px;
+            position: relative;
+        }
+
+        .nav-itme:active {
+            background: rgba(243, 243, 243, .9);
+        }
+
+        .nav-itme:last-child {
+            margin-bottom: 0;
+        }
+
+        .title-wrap {
+            color: #232627;
+            font-size: 14px;
+        }
+
+        .title-wrap p {
+            color: #7D7C7C;
+            font-size: 12px;
+        }
+        /*.header-ico {
+            width: 39px;
+            height: 39px;
+            display: block;
+            background: url("../../icon/tzgg.png") center no-repeat;
+            background-size: contain;
+            margin-right: 15px;
+        }*/
+
+        .header-ico {
+            width: 39px;
+            height: 39px;
+            display: block;
+            margin-right: 15px;
+        }
+        /*.nav-itme:nth-child(2) .header-ico {
+            background: url("../../icon/dbgz.png") center no-repeat;
+            background-size: contain;
+        }
+
+        .nav-itme:nth-child(3) .header-ico {
+            background: url("../../icon/zbxx.png") center no-repeat;
+            background-size: contain;
+        }
+
+        .nav-itme:nth-child(4) .header-ico {
+            background: url("../../icon/hyap.png") center no-repeat;
+            background-size: contain;
+        }
+
+        .nav-itme:nth-child(5) .header-ico {
+            background: url("../../icon/txl.png") center no-repeat;
+            background-size: contain;
+        }*/
+
+        .more {
+            width: 16px;
+            height: 16px;
+            display: block;
+            background: url("../../image/more.png") center no-repeat;
+            background-size: contain;
+        }
+        /*矿区服务*/
+
+        .mine-service {
+            margin: 5px 0;
+            background: rgba(243, 243, 243, 1)
+        }
+
+        .mine-title {
+            font-size: 16px;
+        }
+
+        .mine-titleIco {
+            width: 25px;
+            height: 25px;
+            display: block;
+            margin-right: 10px;
+        }
+
+        .mine-items {
+            margin-top: 10px;
+            flex-wrap: wrap;
+        }
+
+        .mine-item {
+            width: 50%;
+            margin: 12px 0;
+            box-sizing: border-box;
+        }
+
+        .mine-item:nth-child(even) {
+            padding-left: 20px;
+            position: relative;
+        }
+
+        .mine-item:nth-child(even):after {
+            content: '';
+            position: absolute;
+            top: 0;
+            left: 0;
+            width: 1px;
+            height: 100%;
+            background: #E8E8E8;
+        }
+        /*生活服务*/
+
+        .life-service {
+            margin: 0;
+            margin-bottom: 20px;
+        }
+        /*工资密码*/
+
+        .wages-layout {
+            width: 100%;
+            height: 100%;
+            position: fixed;
+            top: 0;
+            left: 0;
+            background: rgba(0, 0, 0, 0.5);
+        }
+
+        .wages {
+            position: absolute;
+            top: 0;
+            left: 0;
+            right: 0;
+            bottom: 0;
+            width: 300px;
+            height: 200px;
+            margin: auto;
+            background: #fff;
+            border-radius: 5px;
+            padding: 10px;
+        }
+
+        .wages-title {
+            text-align: center;
+            font-size: 18px;
+        }
+
+        .wages-wrap {
+            padding: 15px 10px 0 10px;
+            box-sizing: border-box;
+        }
+
+        .wages-wrap input {
+            width: 100%;
+            height: 35px;
+            border: 1px solid #E8E8E8;
+            border-radius: 5px;
+            padding-left: 10px;
+            box-sizing: border-box;
+        }
+
+        .btn-term {
+            text-align: center;
+            margin-top: 20px;
+            position: absolute;
+            bottom: 10px;
+            left: 0;
+            width: 100%;
+            padding: 0 10px;
+            box-sizing: border-box;
+        }
+
+        .btn-term button {
+            width: 49%;
+            padding: 10px 0;
+            text-align: center;
+            border-radius: 3px;
+        }
+
+        .btn-close {
+            border: 1px solid #E8E8E8;
+        }
+
+        .btn-close:active {
+            background: #E8E8E8;
+        }
+
+        .btn-confirm:active {
+            background: rgba(0, 159, 232, .7);
+            border: 1px solid rgba(0, 159, 232, .7);
+        }
+
+        .btn-confirm {
+            margin-top: 10px;
+            border: 1px solid #009fe8;
+            background: #009fe8;
+            color: #fff;
+        }
+
+        .Tips {
+            color: #6C6F74;
+            font-size: 12px;
+            padding: 0 10px;
+            margin-top: 20px;
+        }
+    </style>
+</head>
+
+<body>
+    <div class="api_layout">
+        <!--banner-->
+        <!-- <div class="banner">
+            <img src="../../icon/workBanner.jpeg" alt="">
+        </div> -->
+        <div id="worderbenList"></div>
+        <div id="worderbenListNav"></div>
+        <!-- 天气-->
+        <div class="weather-wrap">
+
+        </div>
+    </div>
+    <!--    工资密码-->
+    <div class="wages-layout" id="wages-layout" style="display: none;">
+        <div class="wages">
+            <h3 class="wages-title">工资权限验证</h3>
+            <div class="wages-wrap">
+                <input type="password" placeholder="请输入登陆密码" class="password">
+                <p class="Tips-p" style="color:red;font-size:12px;margin-top:5px;"></p>
+            </div>
+            <div class="Tips">
+                <span>友情提示:该密码为用户登陆密码。</span>
+            </div>
+            <div class="btn-term">
+                <button type="button" name="button" class="btn-close" onclick="closeWages()">取消</button>
+                <button type="button" name="button" class="btn-confirm" onclick="wagesJurisdiction()">确认</button>
+            </div>
+        </div>
+    </div>
+</body>
+
+</html>
+<script type="text/javascript" src="../../script/api.js"></script>
+<script type="text/javascript" src="../../script/zepto.js"></script>
+<script src="../../script/config.js" charset="utf-8"></script>
+<script src="../../script/doT.min.js" charset="utf-8"></script>
+<script type="text/template" id="templateWorkbench">
+    <div class="banner">
+        <img src="{{=it.header}}" alt="">
+    </div>
+    <div class="nav-wrap">
+        <ul class="nav-itmes">
+            {{ for(var i = 0; i
+            < it.nav.length; i++ ) { }} <li class="flex-space nav-itme" onclick="openNewsList('{{=it.nav[i].link}}')">
+                <div class="flex-start">
+                    <!-- <span class="header-ico"></span> -->
+                    <img class="header-ico" src="{{=it.nav[i].icon}}" alt="">
+                    <div class="title-wrap">
+                        <label>{{=it.nav[i].title}}</label>
+                        <p>{{=it.nav[i].sub_title}}</p>
+                    </div>
+                </div>
+                <i class="more"></i>
+                </li>
+                {{ } }}
+        </ul>
+    </div>
+    <div class="mine-service life-service">
+        {{ for(var k = 0; k
+        < it.module.length; k++ ) { }} <div style="background: #fff; margin-top: 5px;padding: 10px 15px 0 15px">
+            <div class="mine-title flex-start">
+                <img class="mine-titleIco" src="{{=it.module[k].icon}}" alt="">
+                <label>{{=it.module[k].title}}</label>
+            </div>
+            <ul class="flex-space mine-items">
+                {{ for(var j = 0; j
+                < it.module[k].children.length; j++ ) { }} <li class="mine-item life-item" onclick="openmineServiceItem('{{=it.module[k].children[j].link}}','{{=it.module[k].children[j].title}}')">
+                    <div class="flex-start">
+                        <img class="header-ico" src="{{=it.module[k].children[j].icon}}" alt="">
+                        <div class="title-wrap">
+                            <label>{{=it.module[k].children[j].title}}</label>
+                            <p>{{=it.module[k].children[j].sub_title}}</p>
+                        </div>
+                    </div>
+                    </li>
+                    {{ } }}
+            </ul>
+    </div>
+    {{ } }}
+    </div>
+</script>
+<script type="text/javascript">
+    var jobID = "";
+    apiready = function() {
+            var info = $api.getStorage('data');
+            jobID = JSON.parse(info).data.user.staff_num;
+            getWorkbenchList()
+        }
+        // 工资密码
+    function openWages() {
+        $('.password').val('');
+        $('.Tips-p').html('');
+        $('.wages-layout').show();
+        $('.wages').addClass('animated bounceInDown');
+        setTimeout(function() {
+            $('.wages').removeClass('animated bounceInDown')
+        }, 1000);
+    }
+    window.onclick = function(event) {
+        if (event.target == document.getElementById('wages-layout')) {
+            $('.wages-layout').hide();
+        }
+    }
+
+    function closeWages() {
+        $('.wages-layout').hide();
+    };
+    // 工资权限验证
+    function wagesJurisdiction() {
+        var param = {
+            staff_num: jobID,
+            password: $('.password').val()
+        }
+        $http.fnReuestDataNologing(UrlRouter.getPassword, '', 'post', param, function(ret, err) {
+            if (ret.code === 0) {
+                $('.wages-layout').hide();
+                $('.Tips-p').html('');
+                // wages('工资查询');
+                $event.openTabLayout('wages', '../workBench/wages', '工资条', '');
+            } else if (ret.code === 1) {
+                $('.Tips-p').html(ret.message)
+            }
+        })
+    }
+    // 工作台UI列表接口
+    function getWorkbenchList() {
+      $http.requestData(UrlRouter.getWorkbenchList,'get','')
+      .then(res=>{
+          $apis.html(worderbenList, '#templateWorkbench', res.data);
+      })
+      .catch(err=>{})
+    }
+    // 第三方链接跳转
+    function Jump(url, title) {
+        $event.openWin('jumpURL', '../workBench/jumpURL', {
+            url: url,
+            title: title
+        }, '');
+    }
+    //通讯录
+    function organization(title) {
+        $event.openWin('organization', '../mail/organization', '', '');
+    }
+    // //消息列表
+    function openNewsList(link) {
+        var appU = link.split('//');
+        if (appU[2] == '../news/news_win') {
+            // 通知公告
+            $event.openWin('newsList', '../news/news_win', '', '');
+        } else if (appU[2] == '../workBench/getDuty') {
+            //值班信息
+            $event.openWin('getDuty', '../workBench/getDuty', '', '');
+        } else {
+            api.alert({
+                title: '提示',
+                msg: '此功能暂未上线,敬请期待',
+            });
+        }
+    }
+
+    function openmineServiceItem(link, title) {
+        var appU = link.split('//');
+        if (appU[2] == '../workBench/wages') {
+            $('.password').val('');
+            $('.Tips-p').html('');
+            $('.wages-layout').show();
+            $('.wages').addClass('animated bounceInDown');
+            setTimeout(function() {
+                $('.wages').removeClass('animated bounceInDown')
+            }, 1000);
+            // 工资
+            // $event.openTabLayout('wages', '../workBench/wages', title, '');
+        } else if (appU[2] == '../workBench/invoice') {
+            // 发票
+            $event.openTabLayout('invoice', '../workBench/invoice', title, '');
+        } else if (appU[2] == '../productionData/logging') {
+            // 下井记录
+            $event.openTabLayout('logging', '../productionData/logging', '', '');
+        }  else if (appU[2] == '../productionData/persnoalLocation') {
+            // 人员定位
+           $event.openWin('persnoalLocation','../productionData/persnoalLocation','','');
+        } else if (link == 'http://gjj.yinchuan.gov.cn/list_gjjcx.jsp?urltype=tree.TreeTempUrl&wbtreeid=1044') {
+            Jump(link, title)
+        } else if (link == 'http://m.ctrip.com/html5/?sid=155952&allianceid=4897&ouid=index') {
+            Jump(link, title)
+        } else if (link == 'https://h5.waimai.meituan.com/waimai/mindex/home') {
+            Jump(link, title)
+        } else if (link == 'http://i.meituan.com/?city=yinchuan') {
+            Jump(link, title)
+        } else {
+            api.alert({
+                title: '提示',
+                msg: '此功能暂未上线,敬请期待',
+            });
+        }
+    }
+</script>

+ 293 - 0
widget/html/page/frame22.html

@@ -0,0 +1,293 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title>工作台</title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/style.css"/>
+    <link rel="stylesheet" href="../../css/aui.css">
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style>
+        body,html{
+            background: #fff;
+        }
+        .aui-card-list{
+            margin-bottom: 0;
+        }
+        .personal_info{
+            display: flex;
+            justify-content: flex-start;
+            flex-wrap: nowrap;
+            display: -webkit-flex;
+            -webkit-justify-content: flex-start;
+            -webkit-flex-wrap: nowrap;
+            align-items: center;
+            position: relative;
+        }
+        .personal_info span{
+            display: block;
+            font-size: 15px;
+            color: #000;
+        }
+        .personal_info span:first-child{
+            font-weight: bold;
+        }
+        .personal_info span:last-child{
+            color: #69707f;
+        }
+        .api_layout .record_header{
+            width: 52px;
+            height: 52px;
+            -webkit-border-radius: 50%;
+            -moz-border-radius: 50%;
+            border-radius: 50%;
+            margin-right: 7px;
+            border: 1px solid #ECF0F1;
+        }
+        .aui-card-list-header{
+            border-bottom: 1px solid #ecf0f1;
+        }
+        .aui-card-list-content-padded{
+            border-bottom: 1px solid #ecf0f1;
+        }
+        .itme{
+            margin: 10px 0 0 0;
+        }
+        .itme_title_{
+            -webkit-box-sizing: border-box;
+            -moz-box-sizing: border-box;
+            box-sizing: border-box;
+            background: #fafafa;
+            padding: 7px 0 7px 10px;
+        }
+        .itme_title_ span{
+            display: inline-block;
+            font-size: 16px;
+            color: #000;
+        }
+        .itme_title_ span:first-child{
+            width: 39%;
+        }
+        .itme_title_ span:last-child{
+            width: 59%;
+        }
+        .itme_ul li{
+            padding: 7px 0 7px 10px;
+            font-size: 15px;
+            position: relative;
+        }
+        .itme_ul li span:first-child{
+            width: 39%;
+        }
+        .itme_ul li span:last-child{
+            width: 59%;
+        }
+        .scene_img_title{
+            padding: 7px 0 7px 10px;
+            font-size: 16px;
+            color: #000;
+        }
+        .font_bold{
+            font-weight: bold;
+        }
+        .aui-collapse-header.aui-active{
+            background:none;
+        }
+    </style>
+</head>
+<body>
+<div class="api_layout">
+    <!-- <div class="aui-card-list">
+        <div class="aui-card-list-header aui-collapse-header">
+            <div class="font_bold">水泵建设</div>
+            <i class="aui-iconfont aui-icon-down aui-collapse-arrow"></i>
+        </div>
+        <div class="aui-card-list-content-padded aui-collapse-content">
+          <div class="task_info">
+            <div class="personal_info">
+                <img src="{{=urlphp}}storage/avatar/avatar_{{=it[i].createId}}.png" onerror=javascript:this.src="http://jiewei-icon.oss-cn-beijing.aliyuncs.com/icon/default-avatar.png" class="record_header">
+                <p>
+                  <span>张三</span>
+                  <span>信息科</span>
+                </p>
+            </div>
+            <div class="itme">
+               <p class="itme_title_">
+                   <span>项目</span>
+                   <span>内容</span>
+               </p>
+                <ul class="itme_ul">
+                    <li class="flex-start after-border">
+                        <span>完成进度</span>
+                        <span>10%~20%</span>
+                    </li>
+                    <li class="flex-start after-border">
+                        <span>完成进度</span>
+                        <span>10%~20%</span>
+                    </li>
+                    <li class="flex-start after-border">
+                        <span>完成进度</span>
+                        <span>10%~20%</span>
+                    </li>
+                    <li class="flex-start after-border">
+                        <span>完成进度</span>
+                        <span>10%~20%</span>
+                    </li>
+                </ul>
+            </div>
+            <div class="img_scene">
+                <p class="scene_img_title">现场照片</p>
+                <div class="aui-row aui-row-padded">
+                    <div class="aui-col-xs-4">
+                        <img src="../../image/demo.png" />
+                    </div>
+                    <div class="aui-col-xs-4">
+                        <img src="../../image/demo.png" />
+                    </div>
+                    <div class="aui-col-xs-4">
+                        <img src="../../image/demo.png" />
+                    </div>
+                </div>
+            </div>
+          </div>
+          <div class="task_info">
+            <div class="personal_info">
+                <img src="{{=urlphp}}storage/avatar/avatar_{{=it[i].createId}}.png" onerror=javascript:this.src="http://jiewei-icon.oss-cn-beijing.aliyuncs.com/icon/default-avatar.png" class="record_header">
+                <p>
+                  <span>张三</span>
+                  <span>信息科</span>
+                </p>
+            </div>
+            <div class="itme">
+               <p class="itme_title_">
+                   <span>项目</span>
+                   <span>内容</span>
+               </p>
+                <ul class="itme_ul">
+                    <li class="flex-start after-border">
+                        <span>完成进度</span>
+                        <span>10%~20%</span>
+                    </li>
+                    <li class="flex-start after-border">
+                        <span>完成进度</span>
+                        <span>10%~20%</span>
+                    </li>
+                    <li class="flex-start after-border">
+                        <span>完成进度</span>
+                        <span>10%~20%</span>
+                    </li>
+                    <li class="flex-start after-border">
+                        <span>完成进度</span>
+                        <span>10%~20%</span>
+                    </li>
+                </ul>
+            </div>
+            <div class="img_scene">
+                <p class="scene_img_title">现场照片</p>
+                <div class="aui-row aui-row-padded">
+                    <div class="aui-col-xs-4">
+                        <img src="../../image/demo.png" />
+                    </div>
+                    <div class="aui-col-xs-4">
+                        <img src="../../image/demo.png" />
+                    </div>
+                    <div class="aui-col-xs-4">
+                        <img src="../../image/demo.png" />
+                    </div>
+                </div>
+            </div>
+          </div>
+        </div>
+    </div>
+    <div class="aui-card-list">
+           <div class="aui-card-list-header aui-collapse-header">
+               <div class="font_bold">联建楼办公区域进户门更换</div>
+               <i class="aui-iconfont aui-icon-down aui-collapse-arrow"></i>
+           </div>
+           <div class="aui-card-list-content-padded aui-collapse-content">
+               <div class="personal_info">
+                   <img src="{{=urlphp}}storage/avatar/avatar_{{=it[i].createId}}.png" onerror=javascript:this.src="http://jiewei-icon.oss-cn-beijing.aliyuncs.com/icon/default-avatar.png" class="record_header">
+                   <p>
+                       <span>张三</span>
+                       <span>信息科</span>
+                   </p>
+               </div>
+               <div class="itme">
+                   <p class="itme_title_">
+                       <span>项目</span>
+                       <span>内容</span>
+                   </p>
+                   <ul class="itme_ul">
+                       <li class="flex-start after-border">
+                           <span>完成进度</span>
+                           <span>10%~20%</span>
+                       </li>
+                       <li class="flex-start after-border">
+                           <span>完成进度</span>
+                           <span>10%~20%</span>
+                       </li>
+                       <li class="flex-start after-border">
+                           <span>完成进度</span>
+                           <span>10%~20%</span>
+                       </li>
+                       <li class="flex-start after-border">
+                           <span>完成进度</span>
+                           <span>10%~20%</span>
+                       </li>
+                   </ul>
+               </div>
+               <div class="img_scene">
+                   <p class="scene_img_title">现场照片</p>
+                   <div class="aui-row aui-row-padded">
+                       <div class="aui-col-xs-4">
+                           <img src="../../image/demo.png" />
+                       </div>
+                       <div class="aui-col-xs-4">
+                           <img src="../../image/demo.png" />
+                       </div>
+                       <div class="aui-col-xs-4">
+                           <img src="../../image/demo.png" />
+                       </div>
+                   </div>
+               </div>
+           </div>
+       </div> -->
+</div>
+</body>
+</html>
+<script type="text/template" id="templatePublic">
+    {{~it:value:index}} {{?value.departmentId == 'root'}}
+    <li onclick="openQRcodeInfo('{{=value.departmentId}}','{{=value.messageFlag}}')">
+        <span class="news_img">{{=value.departmentName.substring(0,4)}}</span>
+        <div class="api_titles">
+            <span class="api_news_title">{{=value.departmentName}}</span>
+            <p>
+                <i class="api_ico"></i>
+                {{=value.desc}}
+            </p>
+        </div>
+        <span class="api_date">{{=value.time}}</span>
+        {{?value.messageCount != 0}}
+        <span class="api_news_num">{{=value.messageCount}}</span>
+        {{?}}
+        <span class="api_ceil"></span>
+    </li>
+    {{?}} {{~}}
+</script>
+<script type="text/javascript" src="../../script/api.js"></script>
+<script type="text/javascript" src="../../script/doT.min.js"></script>
+<!-- <script src="../../script/aui-toast.js" charset="utf-8"></script> -->
+<!-- <script src="../../script/fastclick.min.js" charset="utf-8"></script> -->
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+    var skip = 0;
+    var toast = new auiToast();
+    apiready = function () {
+
+    }
+    var collapse = new auiCollapse({
+        autoHide:true //是否自动隐藏已经展开的容器
+    });
+</script>

File diff suppressed because it is too large
+ 1045 - 0
widget/html/page/frame3.html


+ 55 - 0
widget/html/page/frame3_1.html

@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0" />
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title>map</title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css" />
+    <link rel="stylesheet" type="text/css" href="../../css/style.css" />
+    <link rel="stylesheet" href="../../css/aui.css">
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style>
+        .api_layout {
+            width: 100%;
+        }
+
+        .frame_bg {
+            display: block;
+            width: 100%;
+        }
+    </style>
+</head>
+
+<body>
+    <div class="api_layout">
+        <div class="frame_bg">
+            <img src="../../image/producrData.png" alt="">
+        </div>
+    </div>
+</body>
+
+</html>
+
+<script type="text/javascript" src="../../script/api.js"></script>
+<script type="text/javascript" src="../../script/doT.min.js"></script>
+<script src="../../script/config.js" charset="utf-8"></script>
+<script src="../../script/zepto.js" charset="utf-8"></script>
+<script type="text/javascript">
+    var toast = new auiToast();
+    apiready = function() {
+        $(window).scroll(function() {
+            sTop = document.body.scrollTop;
+            if (sTop == 0) {
+                api.historyBack({
+                    frameName: 'frame3'
+                }, function(ret, err) {
+                    if (!ret.status) {
+                        api.closeWin();
+                    }
+                });
+            }      
+        });
+    }
+</script>

File diff suppressed because it is too large
+ 1011 - 0
widget/html/page/frame3_2.html


+ 711 - 0
widget/html/page/frame4.html

@@ -0,0 +1,711 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0" />
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title>个人中心</title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css" />
+    <link rel="stylesheet" type="text/css" href="../../css/style.css" />
+    <link rel="stylesheet" type="text/css" href="../../css/aui.css" />
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style>
+        .personal_header_color {
+            width: 100%;
+            height: 57.5px;
+            background: #009FE8;
+        }
+
+        .personal_details_message {
+            display: flex;
+            align-items: center;
+            justify-content: space-between;
+            margin: -34px 14px 0 14px;
+            background: rgba(255, 255, 255, 1);
+            box-shadow: 0px 0px 3px 3px rgba(0, 0, 0, 0.05);
+            border-radius: 2px;
+            padding: 6px 6px 9px 8px;
+        }
+
+        .tips_items_phone,
+        .tips_items_signature {
+            display: none;
+        }
+
+        .tips_phone,
+        .tips_signature {
+            margin: 5px 14px 0 14px;
+            padding: 10px 0 10px 9px;
+            display: flex;
+            align-items: center;
+            background: rgba(255, 255, 255, 1);
+            box-shadow: 0px 0px 5px 5px rgba(0, 0, 0, 0.05);
+            border-radius: 5px;
+            color: #7F8C8D;
+            /*visibility: hidden;*/
+        }
+
+        .tips_phone img,
+        .tips_signature img {
+            width: 21px;
+            height: 21px;
+        }
+
+        .tips_phone div,
+        .tips_signature div {
+            margin-left: 6px;
+        }
+
+        .left_avatar_personal_info {
+            display: flex;
+            align-items: center;
+        }
+
+        .avatar_container img {
+            width: 55px;
+            height: 55px;
+            border-radius: 100%;
+            box-shadow: 0px 0px 4px 4px rgba(0, 0, 0, 0.1);
+        }
+
+        .details_info {
+            margin-left: 12px;
+        }
+
+        .details_info .info_header {
+            display: flex;
+            align-items: center;
+        }
+
+        .info_header_name {
+            font-size: 17px;
+            font-weight: 700;
+        }
+
+        .info_section_footer {
+            font-size: 13px;
+        }
+
+        .info_header .name {
+            color: #232627;
+            font-size: 18px;
+            font-weight: 500;
+        }
+
+        .info_header .qrcode_img img {
+            width: 18px;
+            height: 18px;
+            margin-left: 5px;
+        }
+
+        .right_handle_arrow img {
+            width: 14px;
+            height: 14px
+        }
+
+        .icon_items {
+            margin: 0 16px 23px 16px;
+        }
+
+        .icon_items ul {
+            display: flex;
+            flex-wrap: wrap;
+        }
+
+        .icon_items ul li {
+            width: 33%;
+            text-align: center;
+        }
+
+        .icon_items ul li {
+            display: flex;
+            flex-flow: column;
+            justify-content: center;
+            align-items: center;
+            padding-top: 23px;
+            color: #232627;
+            font-size: 14px;
+        }
+
+        .icon_items ul li div:last-child {
+            margin-top: 6px;
+        }
+        /*.icon_items ul li:last-child {
+            padding-top: 6px;
+        }*/
+
+        .icon_items ul li img {
+            width: 43px;
+            height: 43px;
+        }
+
+        .line {
+            height: 4px;
+            background: rgba(0, 159, 232, 1);
+            margin: 0 14px;
+        }
+
+        .handle_list_item {
+            margin: 0 15px 0 23px;
+        }
+
+        .handle_list_item ul li {
+            height: 45px;
+            display: flex;
+            align-items: center;
+            justify-content: space-between;
+            border-bottom: solid 1px #F5F5F5
+        }
+
+        .handle_list_item ul li:last-child {
+            border-bottom: none
+        }
+
+        .handle_list_item ul li div:first-child {
+            display: flex;
+            align-items: center;
+        }
+
+        .handle_list_item ul li div:first-child span {
+            display: block;
+            margin-left: 6px;
+        }
+
+        .handle_list_item ul li div:first-child img {
+            width: 18px;
+            height: 18px;
+        }
+
+        .filter_gray_img {
+            -webkit-filter: grayscale(100%);
+            -moz-filter: grayscale(100%);
+            -ms-filter: grayscale(100%);
+            -o-filter: grayscale(100%);
+            filter: grayscale(100%);
+            filter: gray;
+        }
+    </style>
+</head>
+
+<body style="background-color:#fff;">
+    <div class="api_layout">
+        <div class="personal_header_color"></div>
+        <div class="personal_details_message" onclick="handleOpenPersonalQrCode()">
+            <div class="left_avatar_personal_info">
+                <!-- http://jiewei-icon.oss-cn-beijing.aliyuncs.com/icon/default-avatar.png -->
+                <div class="avatar_container" onclick="openPersonal()"><img id="avatar_img" src="" alt=""></div>
+                <div class="details_info">
+                    <div class="info_header">
+                        <div class="info_header_name"></div>
+                        <div class="qrcode_img" onclick="handleOpenPersonQrCode()"><img src="../../image/qrCodeImg.png" alt=""></div>
+                    </div>
+                    <div class="info_section_footer"></div>
+                </div>
+            </div>
+            <div class="right_handle_arrow"><img src="../../image/more.png" alt=""></div>
+        </div>
+        <div class="tips_items_phone" onclick="openBind()">
+            <div class="tips_phone">
+                <img src="../../image/tips.png" alt="">
+                <div>未绑定手机号,请立即绑定手机号。</div>
+            </div>
+        </div>
+        <div class="tips_items_signature" onclick="handleOpenSignature()">
+            <div class="tips_signature">
+                <img src="../../image/tips.png" alt="">
+                <div>未添加手写签名,请添加手写签名。</div>
+            </div>
+        </div>
+
+        <div class="icon_items">
+            <ul>
+                <li class="message_alert" onclick="openNewsList()">
+                    <div><img src="../../icon/messagealert.png" alt=""></div>
+                    <div>消息提醒</div>
+                </li>
+                <li onclick="getCollectionList()">
+                    <div><img src="../../icon/Collection.png" alt=""></div>
+                    <div>收藏</div>
+                </li>
+                <li onclick="openExamine()">
+                    <div><img src="../../icon/Workorderapproval.png" alt=""></div>
+                    <div>工单审核</div>
+                </li>
+                <li>
+                    <div><img class="filter_gray_img" src="../../icon/Learningintegra.png" alt=""></div>
+                    <div>学习积分</div>
+                </li>
+                <li>
+                    <div><img class="filter_gray_img" src="../../icon/Integralmall.png" alt=""></div>
+                    <div>积分商城</div>
+                </li>
+                <li>
+                    <div><img class="filter_gray_img" src="../../icon/LearningReport.png" alt=""></div>
+                    <div>学习报表</div>
+                </li>
+                <li onclick="openCloud()">
+                    <div><img src="../../icon/Personalcloudisk.png" alt=""></div>
+                    <div>个人云盘</div>
+                </li>
+                <li onclick="handleUserExplain()">
+                    <div><img src="../../icon/Usermanual.png" alt=""></div>
+                    <div>使用手册</div>
+                </li>
+                <li onclick="handleServicePhone()">
+                    <div><img src="../../icon/Servicephone.png" alt=""></div>
+                    <div>服务电话</div>
+                </li>
+                <li onclick="handleFeedback()">
+                    <div><img src="../../icon/Suggestionfeedback.png" alt=""></div>
+                    <div>建议反馈</div>
+                </li>
+                <li onclick="handleDownQrcode()">
+                    <div><img src="../../icon/downQrcode.png" alt=""></div>
+                    <div>下载二维码</div>
+                </li>
+            </ul>
+        </div>
+        <div class="line"></div>
+        <div class="handle_list_item">
+            <ul>
+                <li onclick="openForget()">
+                    <div>
+                        <img src="../../icon/ChangePassword.png" alt="">
+                        <span>修改密码</span>
+                    </div>
+                    <div class="right_handle_arrow">
+                        <img src="../../image/more.png" alt="">
+                    </div>
+                </li>
+                <li onclick="signOut()">
+                    <div>
+                        <img src="../../icon/Signout.png" alt="">
+                        <span>退出登录</span>
+                    </div>
+                    <div class="right_handle_arrow">
+                        <img src="../../image/more.png" alt="">
+                    </div>
+                </li>
+                <li onclick="handleUpdateTitle()">
+                    <div>
+                        <img src="../../icon/Updatelog.png" alt="">
+                        <span>更新日志</span>
+                    </div>
+                    <div class="right_handle_arrow">
+                        <img src="../../image/more.png" alt="">
+                    </div>
+                </li>
+                <li onclick="clearCache()">
+                    <div>
+                        <img src="../../icon/clearCache.png" alt="">
+                        <span>清除缓存</span>
+                    </div>
+                    <!-- <div class="right_handle_arrow">
+                        <span>MB</span>
+                    </div> -->
+                </li>
+            </ul>
+        </div>
+    </div>
+</body>
+
+</html>
+<script type="text/javascript" src="../../script/api.js"></script>
+<script src="../../script/zepto.js" charset="utf-8"></script>
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+    var token, uuid, headers, personalName = '',
+        staff_num = '',username='';
+    var toast = new auiToast();
+    apiready = function() {
+        var info = $api.getStorage('data'),
+            user = JSON.parse(info).data.user;
+        token = JSON.parse(info).data.access_token;
+        staff_num = JSON.parse(info).data.user.staff_num;
+        personalName = JSON.parse(info).data.user.name;
+        uuid = JSON.parse(info).data.user.staff_num;
+        username = JSON.parse(info).data.user.name;
+        headers = {
+            "Authorization": "Bearer " + token
+        };
+        newsNum()
+            // 个人信息
+        $http.fnReuestData(UrlRouter.userInfoApi, headers, 'post', '', personalCenterInfo);
+
+        api.addEventListener({
+            name: 'userInfo'
+        }, function(ret, err) {
+            $http.fnReuestData(UrlRouter.userInfoApi, headers, 'post', '', personalCenterInfo);
+        });
+
+        api.addEventListener({
+            name: 'myNews'
+        }, function(ret, err) {
+            newsNum()
+        });
+
+        // 手机号绑定更新 -> 对应 forgetBind/bindPhone.html
+        api.addEventListener({
+            name: 'updateUserInfoPhone'
+        }, function(ret, err) {
+            $http.fnReuestData(UrlRouter.userInfoApi, headers, 'post', '', personalCenterInfo);
+        });
+
+        // 签名更新
+        api.addEventListener({
+            name: 'updateUserInfo'
+        }, function(ret, err) {
+            $http.fnReuestData(UrlRouter.userInfoApi, headers, 'post', '', personalCenterInfo);
+        });
+
+
+    };
+    // 清除手机app缓存
+    function clearCache() {
+      api.clearCache(function() {
+        api.toast({
+            msg: '清除完成'
+        })
+      })
+    }
+    // 云盘
+    function openCloud(){
+      api.showProgress({
+          title: '登陆云盘中',
+          text: '',
+          modal: true
+      });
+      // console.log(UrlRouter.loginExtends);
+        $http.requestData(UrlRouter.loginExtends,'post',
+        {username,userNo:uuid})
+        .then(res=>{
+          // console.log(JSON.stringify(res));
+          if (res.code === 0) {
+            api.hideProgress();
+            setTimeout(()=>{
+              $event.openTabLayout('cloudDisk','../cloudDisk/cloudDiskList','云盘',{cloudtoken:res.data.token});
+            },200)
+          }else {
+            api.toast({
+                msg: '用户名或工号错误!',
+                duration: 2000,
+                location: 'top'
+            });
+            api.hideProgress();
+          }
+        })
+        .catch(err=>{
+          api.toast({
+              msg: '网络错误,请检查网络!',
+              duration: 2000,
+              location: 'top'
+          });
+          api.hideProgress();
+        })
+    }
+    // 个人信息展示
+    function personalCenterInfo(ret, err) {
+        if (ret) {
+            toast.hide();
+            if (ret.code === 0) {
+                var ret = ret.data;
+                var image = 'http://jiewei-icon.oss-cn-beijing.aliyuncs.com/icon/default-avatar.png';
+                // var bindPhone = $api.dom('.api_phoneBind_wrap');
+                var name = $api.dom('.info_header_name'),
+                    api_dep = $api.dom('.info_section_footer'),
+                    // personalName = ret.name,
+                    // staff_num = ret.staff_num,
+                    mobile = ret.mobile,
+                    signature = ret.sign
+                if (mobile == null) {
+                    $api.css($api.dom('.tips_items_phone'), 'display: block');
+                } else {
+                    $api.css($api.dom('.tips_items_phone'), 'display: none');
+                }
+                if (signature == null) {
+                    $api.css($api.dom('.tips_items_signature'), 'display: block');
+                } else {
+                    $api.css($api.dom('.tips_items_signature'), 'display: none');
+                }
+                ret.name == null ? $api.html(name, '无') : $api.html(name, ret.name);
+                ret.section_fullname == null ? $api.html(api_dep, '无') : $api.html(api_dep, ret.section_fullname);
+                ret.avatar == null ? $('#avatar_img').attr('src',image) : $('#avatar_img').attr('src',ret.avatar)
+            } else if (ret.code === 401) {
+                api.alert({
+                    title: '提示',
+                    msg: '登录过期,重新登录',
+                }, function(ret, err) {
+                    var index = ret.buttonIndex;
+                    if (index == 1) {
+                        api.setStatusBarStyle({
+                            color: 'rgba(0,0,0,0)',
+                            style: 'light'
+                        });
+                        api.closeWin({
+                            name: 'index'
+                        });
+                    }
+                });
+            }
+        } else {
+            toast.hide();
+            api.toast({
+                msg: '网络错误',
+                duration: 2000,
+                location: 'bottom'
+            });
+        }
+    }
+    // 打开个人中心二维码
+    function handleOpenPersonQrCode() {
+
+    }
+
+    // 打开二维码页面详情
+    function handleOpenPersonalQrCode() {
+        let title = `${staff_num}-${personalName}`;
+        $http.requestData(`${UrlRouter.getPagebyNOAndName}?title=${title}`, 'get', '')
+            .then(ret => {
+                if (ret.data.id) {
+                    $event.openWin('browseQrcode_win', '../browseQrcode/browseQrcode_win', {
+                        pageId: ret.data.id,
+                        title: '人员详情'
+                    }, '');
+                }
+            })
+            .catch(err => {
+                // console.log(JSON.stringify(err));
+            })
+    }
+    // 更新日志
+    function handleUpdateTitle() {
+        $event.openWin('browseQrcode_win', '../browseQrcode/browseQrcode_win', {
+            pageId: pageIdConfig.updateLog,
+            title: '更新日志'
+        }, '');
+    }
+    // 修改密码
+    function openForget() {
+        $event.openTabLayout('forget', '../forgetBind/forgetPass', '修改密码', '');
+    }
+    // 绑定手机号
+    function openBind() {
+        $event.openTabLayout('bindPhone', '../forgetBind/bindPhone', '绑定手机号', '');
+    }
+    // 打开手写签名页面
+    function handleOpenSignature() {
+        $event.openTabLayout('handwrittenSignature', '../personalData/handwrittenSignature', '手写签名', '')
+    }
+    // 下载二维码
+    function handleDownQrcode() {
+        $event.openTabLayout('qrcodeShare', '../browseQrcode/qrcodeShare', '二维码下载', '');
+    }
+    // 我的审核
+    function openExamine() {
+        $event.openWin('examineMy_win', '../wordorder/examineMy_win', '', '');
+    }
+    // 服务电话
+    function handleServicePhone() {
+        api.call({
+            type: 'tel_prompt',
+            number: '18152480670'
+        });
+    }
+    // 使用说明
+    function handleUserExplain() {
+        $event.openWin('browseQrcode_win', '../browseQrcode/browseQrcode_win', {
+            pageId: pageIdConfig.userManual,
+            title: '使用说明'
+        }, '');
+    }
+    // 建议反馈
+    function handleFeedback() {
+        $event.openWin('browseQrcode_win', '../browseQrcode/browseQrcode_win', {
+            pageId: pageIdConfig.suggestionFeedback,
+            title: '意见反馈'
+        }, '');
+    }
+    // // 我的审核openExamineDetails
+    // function openExamineDetails() {
+    //   $event.openTabLayout('wordorderDetails','../wordorder/wordorderDetails','我的审核','');
+    // }
+    // //我的工单
+    // function openMyWordOder() {
+    //   $event.openWin('myWordeOrder_win','../wordorder/myWordeOrder_win','','');
+    // }
+    // //我的流程
+    // function openMyWordOderList() {
+    //   $event.openTabLayout('wordorderProcess','../wordorder/wordOrderProcess','工单流程','');
+    // }
+    // // 打开详情
+    function openPersonal() {
+        $event.openWin('personal', '../personalData/personal', '', '');
+    }
+    // //消息列表
+    function openNewsList() {
+        $event.openWin('newsList', '../news/news_win', '', '');
+    }
+
+    // 收藏列表
+    function getCollectionList() {
+      $event.openTabLayout('collectionList', '../personalData/collectionList', '收藏列表', '')
+    }
+    // 清除缓存
+    // function clearCache() {
+    //     $event.openWin('clearCache','clearCache','','');
+    // }
+    // 上传头像
+    var headImg;
+
+    function actionSheetFun() {
+        api.actionSheet({
+            title: '选择',
+            cancelTitle: '取消',
+            buttons: ['相机', '相册']
+        }, function(ret, err) {
+            if (ret.buttonIndex != 3) {
+                var type = 'camera';
+                if (ret.buttonIndex == 1) {
+                    type = 'camera';
+                } else {
+                    type = 'album';
+                }
+                api.getPicture({
+                    sourceType: type
+                }, function(ret, err) {
+                    if (ret) {
+                        photoTailoring(ret.data);
+                        headImg = ret.data;
+                    }
+                });
+            }
+        });
+    }
+
+    function uploadUrl(imgUrl) {
+        var upload_avater = $api.byId('head_img');
+        upload_avater.style.backgroundImage = 'url(' + imgUrl + ')';
+    }
+
+    function uploadHead(imgUrl) {
+        toast.loading({
+            title: "加载中",
+            duration: 2000
+        });
+        api.ajax({
+            url: urlphp + 'api/user/avatar/upload',
+            method: 'post',
+            headers: {
+                "Authorization": "Bearer " + token,
+            },
+            data: {
+                files: {
+                    avatar: imgUrl
+                }
+            }
+        }, function(ret, err) {
+            if (ret) {
+                toast.hide();
+                if (ret.code === 0) {
+                    api.toast({
+                        msg: '上传成功',
+                        duration: 2000,
+                        location: 'top'
+                    });
+                } else {
+                    api.toast({
+                        msg: '上传失败',
+                        duration: 2000,
+                        location: 'top'
+                    });
+                }
+            } else {
+                toast.hide();
+                api.toast({
+                    msg: '网络错误',
+                    duration: 2000,
+                    location: 'top'
+                });
+            }
+        });
+
+    }
+    // 退出
+    function signOut() {
+        api.confirm({
+            title: '提示',
+            msg: '退出登录?',
+            buttons: ['确定', '取消']
+        }, function(ret, err) {
+            var index = ret.buttonIndex;
+            if (index == 1) {
+                api.setStatusBarStyle({
+                    color: 'rgba(0,0,0,0)',
+                    style: 'light'
+                });
+                $api.clearStorage();
+                api.closeWin({
+                    name: 'index'
+                });
+            }
+        });
+    }
+    // 照片裁剪
+    function photoTailoring(imgPath) {
+        var systemType = api.systemType;
+        if (systemType == 'ios') {
+            api.openFrame({
+                name: 'tailoring',
+                url: 'tailoring.html',
+                rect: {
+                    x: 0,
+                    y: 0,
+                    w: api.winWidth,
+                    h: api.winHeight
+                },
+                pageParam: {
+                    tailoring: imgPath
+                },
+                bounces: false,
+                bgColor: 'rgba(0,0,0,0)',
+                vScrollBarEnabled: false,
+                hScrollBarEnabled: false,
+            });
+        } else if (systemType == 'android') {
+            var imageCrop = api.require('imageCrop');
+            imageCrop.clipPhoto({
+                imgPath: imgPath,
+                height: api.winHeight,
+                width: api.winWidth
+            }, function(ret, err) {
+                if (ret) {
+                    uploadUrl(ret.imgPath);
+                    uploadHead(ret.imgPath);
+                }
+            });
+        }
+    }
+    //工单
+    function openWordOrder() {
+        // $event.openWin('wordorder_win','../wordorder/wordorder_win','','')
+        // $event.openTabLayout('wordOrder','wordorder_frame','工单列表','')
+    }
+    // 消息总数
+    function newsNum() {
+        $http.fnReuestDataNologing(UrlRouter.getNewsNum, headers, 'get', '', function(ret, err) {
+            if (ret.code === 0) {
+                if (ret.data.unread_num === 0) {
+                    $api.css($api.dom('.news_num'), 'display:none');
+                    $api.html($api.dom('.news_num'), '');
+                } else if (ret.data.unread_num > 99 || ret.data.unread_num == 99) {
+                    $api.css($api.dom('.news_num'), 'display:block');
+                    $api.html($api.dom('.news_num'), 99);
+                } else {
+                    $api.css($api.dom('.news_num'), 'display:block');
+                    $api.html($api.dom('.news_num'), ret.data.unread_num);
+                }
+            }
+        })
+    }
+</script>

+ 94 - 0
widget/html/page/openNews.html

@@ -0,0 +1,94 @@
+<!doctype html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <meta name="format-detection"content="telephone=no">
+    <title>index</title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/style.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style media="screen">
+      body,html{
+        margin: 0;
+        background: #fff;
+      }
+    </style>
+</head>
+<body>
+  <div class="api_layout">
+    <header class="header-login">
+       <img class="backBtn" src="../../image/btn_back.png" alt="" onclick="backIndex()">
+       <p class="api_text">新闻列表</p>
+    </header>
+  </div>
+</body>
+</html>
+<script type="text/javascript" src="../../script/api.js"></script>
+<!-- <script src="../../script/fastclick.min.js"></script> -->
+<!-- <script src="../../script/aui-toast.js"></script> -->
+<script src="../../script/config.js"></script>
+<script type="text/javascript">
+    apiready = function () {
+        $api.fixStatusBar($api.dom('header') );
+        var url = api.pageParam.url,title = api.pageParam.title;
+        var info = $api.getStorage('data'),
+        token = JSON.parse(info).data.access_token;
+        openFrameUrl(url,token);
+        keybackFun()
+    }
+    function openFrameUrl(url,token_) {
+      var browser = api.require('webBrowser');
+      browser.openView({
+          url: urlphp+"admin/article/newsList?URl="+token_,
+          rect: {
+              x: 0,
+              x: 0,
+              y: $api.dom('header').offsetHeight,
+              w: api.winWidth,
+              h: $api.winHeight
+          }
+      }, function(ret, err) {
+          switch (ret.state) {
+              case 0:
+                  break;
+              case 1:
+                  break;
+              case 2:
+                  break;
+              case 3:
+              break;
+              case 4:
+                  break;
+              default:
+                  break;
+          }
+      })
+    }
+      function keybackFun() {
+        api.addEventListener({
+        		name: 'keyback'
+        	}, function(ret, err){
+            var browser = api.require('webBrowser');
+              browser.historyBack(
+                  function(ret, err) {
+                      if (!ret.status) {
+                          api.closeWin();
+                      }
+                  }
+              );
+
+        });
+      }
+    function backIndex() {
+      var browser = api.require('webBrowser');
+      browser.historyBack(
+          function(ret, err) {
+              if (!ret.status) {
+                  api.closeWin();
+              }
+          }
+      );
+    }
+</script>

+ 94 - 0
widget/html/page/openUrl.html

@@ -0,0 +1,94 @@
+<!doctype html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <meta name="format-detection"content="telephone=no">
+    <title>index</title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/style.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style media="screen">
+      body,html{
+        margin: 0;
+        background: #fff;
+      }
+    </style>
+</head>
+<body>
+  <div class="api_layout">
+    <header class="header-login">
+       <img class="backBtn" src="../../image/btn_back.png" alt="" onclick="backIndex()">
+       <p class="api_text"></p>
+    </header>
+  </div>
+</body>
+</html>
+<script type="text/javascript" src="../../script/api.js"></script>
+<!-- <script src="../../script/fastclick.min.js"></script> -->
+<!-- <script src="../../script/aui-toast.js"></script> -->
+<script src="../../script/config.js"></script>
+<script type="text/javascript">
+var token;
+    apiready = function () {
+        $api.fixStatusBar($api.dom('header') );
+        var url = api.pageParam.url,title = api.pageParam.title;
+        openFrameUrl(url,title);
+        keybackFun()
+    }
+    function openFrameUrl(url,title) {
+      $api.html($api.dom('.api_text'), title);
+      var browser = api.require('webBrowser');
+      browser.openView({
+          url: url == '#'?'404':url,
+          rect: {
+              x: 0,
+              x: 0,
+              y: $api.dom('header').offsetHeight,
+              w: api.winWidth,
+              h: $api.winHeight
+          }
+      }, function(ret, err) {
+          switch (ret.state) {
+              case 0:
+                  break;
+              case 1:
+                  break;
+              case 2:
+                  break;
+              case 3:
+              break;
+              case 4:
+                  break;
+              default:
+                  break;
+          }
+      })
+    }
+      function keybackFun() {
+        api.addEventListener({
+        		name: 'keyback'
+        	}, function(ret, err){
+            var browser = api.require('webBrowser');
+              browser.historyBack(
+                  function(ret, err) {
+                      if (!ret.status) {
+                          api.closeWin();
+                      }
+                  }
+              );
+
+        });
+      }
+    function backIndex() {
+      var browser = api.require('webBrowser');
+      browser.historyBack(
+          function(ret, err) {
+              if (!ret.status) {
+                  api.closeWin();
+              }
+          }
+      );
+    }
+</script>

+ 114 - 0
widget/html/page/openUrlBanner.html

@@ -0,0 +1,114 @@
+<!doctype html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <meta name="format-detection"content="telephone=no">
+    <title>index</title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/style.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style media="screen">
+      body,html{
+        margin: 0;
+        background: #fff;
+      }
+    </style>
+</head>
+<body>
+  <div class="api_layout">
+    <header class="header-login">
+       <img class="backBtn" src="../../image/btn_back.png" alt="" onclick="backIndex()">
+       <p class="api_text"></p>
+    </header>
+  </div>
+</body>
+</html>
+<script type="text/javascript" src="../../script/api.js"></script>
+<!-- <script src="../../script/fastclick.min.js"></script> -->
+<!-- <script src="../../script/aui-toast.js"></script> -->
+<script src="../../script/config.js"></script>
+<script type="text/javascript">
+    apiready = function () {
+        $api.fixStatusBar($api.dom('header') );
+        var url = api.pageParam.url,title = api.pageParam.title;
+        var info = $api.getStorage('data'),
+        name = JSON.parse(info).data.user.name,
+        uuid = JSON.parse(info).data.user.staff_num,
+        departmentID = JSON.parse(info).data.user.section_id;
+        openFrameUrl(url,title,name,uuid,departmentID);
+        keybackFun()
+    }
+    function openFrameUrl(url,title,uname,uuid,departmentID) {
+      var name,value,info =[],Qrurl= url;
+        var str = url;
+        var num=str.indexOf("?");
+        str=str.substr(num+1);
+        var arr=str.split("&");
+        for(var i=0;i < arr.length;i++){
+            num=arr[i].indexOf("=");
+            if(num>0){
+                name=arr[i].substring(0,num);
+                value=arr[i].substr(num+1);
+                this[name]=value;
+                info.push(value)
+            }
+        }
+      if (info[2] != "" && info[2]) {
+         Qrurl = urlphp+"assets/html/QRcoddetails/index.html?name="+uname+"&uuid="+uuid+"&pageId="+info[2]+"&departmentID="+departmentID
+      }
+      var browser = api.require('webBrowser');
+      browser.openView({
+          url: Qrurl == '#'?'404':Qrurl,
+          rect: {
+              x: 0,
+              x: 0,
+              y: $api.dom('header').offsetHeight,
+              w: api.winWidth,
+              h: $api.winHeight
+          }
+      }, function(ret, err) {
+          switch (ret.state) {
+              case 0:
+                  break;
+              case 1:
+                  break;
+              case 2:
+                  break;
+              case 3:
+              $api.html($api.dom('.api_text'), ret.title);
+              break;
+              case 4:
+                  break;
+              default:
+                  break;
+          }
+      })
+    }
+      function keybackFun() {
+        api.addEventListener({
+        		name: 'keyback'
+        	}, function(ret, err){
+            var browser = api.require('webBrowser');
+              browser.historyBack(
+                  function(ret, err) {
+                      if (!ret.status) {
+                          api.closeWin();
+                      }
+                  }
+              );
+
+        });
+      }
+    function backIndex() {
+      var browser = api.require('webBrowser');
+      browser.historyBack(
+          function(ret, err) {
+              if (!ret.status) {
+                  api.closeWin();
+              }
+          }
+      );
+    }
+</script>

+ 197 - 0
widget/html/page/search2_frameDetails1.html

@@ -0,0 +1,197 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/aui.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style>
+        @media screen and (-webkit-min-device-pixel-ratio:1.5) {
+            .aui-list{
+                background-image:none!important;
+            }
+        }
+        .aui-list.aui-list-in .aui-list-item{
+            background-size:93% 1px;
+        }
+        .aui-list.aui-list-in .aui-list-item:last-child{
+            background-position:0.75rem bottom;
+        }
+        .api_layout .aui-list .aui-list-item{
+            height: auto;
+            line-height: normal;
+        }
+        .api_layout .aui-list .aui-list-item-inner{
+            height: auto;
+            line-height: normal;
+            padding-top: 10px;
+            padding-bottom: 10px;
+            display: block;
+        }
+        .aui-list-item-arrow:before{
+            border: none;
+        }
+        .aui-list-item-inner.aui-list-item-arrow{
+            padding-right: 0.75rem;
+        }
+        .col_ p{
+            font-size: 15px;
+            color: #121212;
+            width: 100%;
+            display: -webkit-flex;
+            display: flex;
+            justify-content: space-between;
+            -webkit-justify-content: space-between;
+            flex-wrap: nowrap;
+            -webkit-flex-wrap: nowrap;
+            align-items: center;
+            -webkit-align-items: center;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            white-space: nowrap;
+            margin-bottom: 10px;
+        }
+        .col_ p span:last-child{
+            font-size: 14px;
+            color: #6C6F74;
+        }
+        .col_ p span:first-child{
+            width: 72%;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            white-space: nowrap;
+        }
+        .personal_centerInfo img{
+            width: 50px;
+            height: 50px;
+            margin-right: 10px;
+            border: 1px solid #f2f2f2;
+            border-radius: 50%;
+        }
+        .personal_center span{
+            display: block;
+        }
+        .personal_center span:first-child{
+            font-size: 16px;
+        }
+        .personal_center span:last-child{
+            font-size: 15px;
+            color: #a7a5bb;
+        }
+        .personal_centerInfo{
+            padding: 10px 0 10px 0.75rem ;
+            background: #fff;
+        }
+        .spanInfo{
+            display: block;
+            font-size: 14px;
+            color: #6C6F74;
+            margin-bottom: 5px;
+        }
+        .spanInfo:last-child{
+            margin-bottom: 0;
+        }
+        .title_{
+            background: #fff;
+            padding: 5px 0.75rem;
+            display: -webkit-flex;
+            display: flex;
+            justify-content: flex-start;
+            -webkit-justify-content: flex-start;
+            flex-wrap: nowrap;
+            -webkit-flex-wrap: nowrap;
+            align-items: center;
+            -webkit-align-items: center;
+            background-size: 92% 1px;
+            background-repeat: no-repeat;
+            background-position: 0.75rem bottom;
+            background-image: linear-gradient(0,#dddddd,#dddddd 50%,transparent 50%);
+            background-image: -webkit-linear-gradient(90deg,#dddddd,#dddddd 50%,transparent 50%);
+        }
+        .title_ p{
+            font-size: 17px;
+            color: #000;
+        }
+        .title_ span{
+            width: 4px;
+            height: 40px;
+            background: #009fe8;
+            margin-right: 10px;
+        }
+    </style>
+</head>
+<body>
+<div class="api_layout" id="api_layout">
+    <div>
+        <div class="title_">
+            <span></span>
+            <p id="titles_"></p>
+        </div>
+        <ul class="aui-list aui-list-in" id="dataContent"></ul>
+    </div>
+</div>
+<div class="noText hide">
+    <img src="../../image/noText.png" alt="">
+</div>
+</body>
+</html>
+<script type="text/template" id="templateQrcode">
+    {{~it:value}}
+        <li class="aui-list-item col_" onclick="openDetails2('{{=value.eName}}','{{=value.did}}')">
+            <div class="aui-list-item-inner aui-list-item-arrow">
+                <p>
+                    <span>{{=value.eName}}</span>
+                    <span>数量:{{=value.eNum}}</span>
+                </p>
+                <span class="spanInfo">类型:{{=value.dName}}</span>
+            </div>
+        </li>
+    {{~}}
+</script>
+<script type="text/javascript" src="../../script/api.js"></script>
+<!-- <script src="../../script/aui-toast.js" charset="utf-8"></script> -->
+<!-- <script src="../../script/fastclick.min.js" charset="utf-8"></script> -->
+<script src="../../script/doT.min.js" charset="utf-8"></script>
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+    var toast = new auiToast();
+    apiready = function () {
+      detaileFun($api.getStorage('titleKey'))
+    };
+    function detaileFun(values) {
+        toast.loading({
+            title: "加载中",
+            duration: 2000
+        });
+        api.ajax({
+            url: "http://nxjiewei.com/colliery-system/api/page/v1/caByDidPage.html?title="+values+"&pageNumber=0&pageSize=20",
+            method: 'get',
+        },function(ret, err){
+            toast.hide();
+            if (ret && ret.code == 200) {
+                document.getElementById('titles_').innerHTML = values;
+                if (ret.content.data != "") {
+                    $apis.html(dataContent,'#templateQrcode',ret.content.data);
+                    $api.addCls($api.dom('.noText'), 'hide');
+                }else {
+                    $apis.html(dataContent,'#templateQrcode',ret.content.data);
+                    $api.removeCls($api.dom('.noText'), 'hide');
+                }
+            }else {
+                api.toast({
+                    msg: '加载超时,请检查网络',
+                    duration: 2000,
+                    location: 'bottom'
+                });
+            }
+        });
+    }
+    function openDetails2(t,id) {
+        var objs = {title:t,oid:id};
+        $api.setStorage('monitorValue',JSON.stringify(objs));
+        $event.openTabLayout('search2_frameDetails2','search2_frameDetails2','智慧矿山');
+    }
+</script>

+ 199 - 0
widget/html/page/search2_frameDetails2.html

@@ -0,0 +1,199 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/aui.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style>
+        @media screen and (-webkit-min-device-pixel-ratio:1.5) {
+            .aui-list{
+                background-image:none!important;
+            }
+        }
+        .aui-list.aui-list-in .aui-list-item{
+            background-size:93% 1px;
+        }
+        .aui-list.aui-list-in .aui-list-item:last-child{
+            background-position:0.75rem bottom;
+        }
+        .api_layout .aui-list .aui-list-item{
+            height: auto;
+            line-height: normal;
+        }
+        .api_layout .aui-list .aui-list-item-inner{
+            height: auto;
+            line-height: normal;
+            padding-top: 10px;
+            padding-bottom: 10px;
+            display: block;
+        }
+        .aui-list-item-arrow:before{
+            border: none;
+        }
+        .aui-list-item-inner.aui-list-item-arrow{
+            padding-right: 0.75rem;
+        }
+        .col_ p{
+            font-size: 15px;
+            color: #121212;
+            width: 100%;
+            display: -webkit-flex;
+            display: flex;
+            justify-content: space-between;
+            -webkit-justify-content: space-between;
+            flex-wrap: nowrap;
+            -webkit-flex-wrap: nowrap;
+            align-items: center;
+            -webkit-align-items: center;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            white-space: nowrap;
+            margin-bottom: 10px;
+        }
+        .col_ p span:last-child{
+            font-size: 14px;
+            color: #6C6F74;
+        }
+        .col_ p span:first-child{
+            width: 72%;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            white-space: nowrap;
+        }
+        .personal_centerInfo img{
+            width: 50px;
+            height: 50px;
+            margin-right: 10px;
+            border: 1px solid #f2f2f2;
+            border-radius: 50%;
+        }
+        .personal_center span{
+            display: block;
+        }
+        .personal_center span:first-child{
+            font-size: 16px;
+        }
+        .personal_center span:last-child{
+            font-size: 15px;
+            color: #a7a5bb;
+        }
+        .personal_centerInfo{
+            padding: 10px 0 10px 0.75rem ;
+            background: #fff;
+        }
+        .spanInfo{
+            display: block;
+            font-size: 14px;
+            color: #6C6F74;
+            margin-bottom: 5px;
+        }
+        .spanInfo:last-child{
+            margin-bottom: 0;
+        }
+        .title_{
+            background: #fff;
+            padding: 5px 0.75rem;
+            display: -webkit-flex;
+            display: flex;
+            justify-content: flex-start;
+            -webkit-justify-content: flex-start;
+            flex-wrap: nowrap;
+            -webkit-flex-wrap: nowrap;
+            align-items: center;
+            -webkit-align-items: center;
+            background-size: 92% 1px;
+            background-repeat: no-repeat;
+            background-position: 0.75rem bottom;
+            background-image: linear-gradient(0,#dddddd,#dddddd 50%,transparent 50%);
+            background-image: -webkit-linear-gradient(90deg,#dddddd,#dddddd 50%,transparent 50%);
+        }
+        .title_ p{
+            font-size: 17px;
+            color: #000;
+        }
+        .title_ span{
+            width: 4px;
+            height: 40px;
+            background: #009fe8;
+            margin-right: 10px;
+        }
+    </style>
+</head>
+<body>
+<div class="api_layout" id="api_layout">
+    <div>
+        <div class="title_">
+            <span></span>
+            <p id="titles_"></p>
+        </div>
+        <ul class="aui-list aui-list-in" id="dataContent"></ul>
+    </div>
+</div>
+<div class="noText hide">
+    <img src="../../image/noText.png" alt="">
+</div>
+</body>
+</html>
+<script type="text/template" id="templateQrcode">
+    {{~it:value}}
+        <li class="aui-list-item col_" onclick="openDetails2('{{=value.eName}}','{{=value.oid}}','{{=value.oName}}','{{=value.did}}')">
+            <div class="aui-list-item-inner aui-list-item-arrow">
+                <p>
+                    <span>{{=value.eName}}</span>
+                    <span>数量:{{=value.eNum}}</span>
+                </p>
+                <span class="spanInfo">单位:{{=value.units}}</span>
+                <span class="spanInfo">领用单位:{{=value.oName}}</span>
+            </div>
+        </li>
+    {{~}}
+</script>
+<script type="text/javascript" src="../../script/api.js"></script>
+<!-- <script src="../../script/aui-toast.js" charset="utf-8"></script> -->
+<!-- <script src="../../script/fastclick.min.js" charset="utf-8"></script> -->
+<script src="../../script/doT.min.js" charset="utf-8"></script>
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+    var toast = new auiToast();
+    apiready = function () {
+      detaileFun($api.getStorage('monitorValue'))
+    };
+    function detaileFun(monitorValue) {
+        toast.loading({
+            title: "加载中",
+            duration: 2000
+        });
+        api.ajax({
+             url:"http://nxjiewei.com/colliery-system/api/page/v1/caByOrgPage.html?title="+JSON.parse(monitorValue).title+"&did="+JSON.parse(monitorValue).oid+"&pageNumber=0&pageSize=20",
+            method: 'get',
+        },function(ret, err){
+            toast.hide();
+            if (ret && ret.code == 200) {
+                document.getElementById('titles_').innerHTML = JSON.parse(monitorValue).title
+                if (ret.content.data != "") {
+                    $apis.html(dataContent,'#templateQrcode',ret.content.data);
+                    $api.addCls($api.dom('.noText'), 'hide')
+                }else {
+                    $apis.html(dataContent,'#templateQrcode',ret.content.data)
+                    $api.removeCls($api.dom('.noText'), 'hide')
+
+                }
+            }else {
+                api.toast({
+                    msg: '加载超时,请检查网络',
+                    duration: 2000,
+                    location: 'bottom'
+                });
+            }
+        });
+    }
+    function openDetails2(t,id,deps,ids) {
+        var objs = {title:t,oid:id,dep:deps,did:ids};
+        $api.setStorage('monitorValue3',JSON.stringify(objs));
+        $event.openTabLayout('search2_frameDetails3','search2_frameDetails3','智慧矿山')
+    }
+</script>

+ 200 - 0
widget/html/page/search2_frameDetails3.html

@@ -0,0 +1,200 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/aui.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style>
+        @media screen and (-webkit-min-device-pixel-ratio:1.5) {
+            .aui-list{
+                background-image:none!important;
+            }
+        }
+        .aui-list.aui-list-in .aui-list-item{
+            background-size:93% 1px;
+        }
+        .aui-list.aui-list-in .aui-list-item:last-child{
+            background-position:0.75rem bottom;
+        }
+        .api_layout .aui-list .aui-list-item{
+            height: auto;
+            line-height: normal;
+        }
+        .api_layout .aui-list .aui-list-item-inner{
+            height: auto;
+            line-height: normal;
+            padding-top: 10px;
+            padding-bottom: 10px;
+            display: block;
+        }
+        .aui-list-item-arrow:before{
+            border: none;
+        }
+        .aui-list-item-inner.aui-list-item-arrow{
+            padding-right: 0.75rem;
+        }
+        .col_ p{
+            font-size: 15px;
+            color: #121212;
+            width: 100%;
+            display: -webkit-flex;
+            display: flex;
+            justify-content: space-between;
+            -webkit-justify-content: space-between;
+            flex-wrap: nowrap;
+            -webkit-flex-wrap: nowrap;
+            align-items: center;
+            -webkit-align-items: center;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            white-space: nowrap;
+            margin-bottom: 10px;
+        }
+        .col_ p span:last-child{
+            font-size: 14px;
+            color: #6C6F74;
+        }
+        .col_ p span:first-child{
+            width: 72%;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            white-space: nowrap;
+        }
+        .personal_centerInfo img{
+            width: 50px;
+            height: 50px;
+            margin-right: 10px;
+            border: 1px solid #f2f2f2;
+            border-radius: 50%;
+        }
+        .personal_center span{
+            display: block;
+        }
+        .personal_center span:first-child{
+            font-size: 16px;
+        }
+        .personal_center span:last-child{
+            font-size: 15px;
+            color: #a7a5bb;
+        }
+        .personal_centerInfo{
+            padding: 10px 0 10px 0.75rem ;
+            background: #fff;
+        }
+        .spanInfo{
+            display: block;
+            font-size: 14px;
+            color: #6C6F74;
+            margin-bottom: 5px;
+        }
+        .spanInfo:last-child{
+            margin-bottom: 0;
+        }
+        .title_{
+            background: #fff;
+            padding: 5px 0.75rem;
+            display: -webkit-flex;
+            display: flex;
+            justify-content: flex-start;
+            -webkit-justify-content: flex-start;
+            flex-wrap: nowrap;
+            -webkit-flex-wrap: nowrap;
+            align-items: center;
+            -webkit-align-items: center;
+            background-size: 92% 1px;
+            background-repeat: no-repeat;
+            background-position: 0.75rem bottom;
+            background-image: linear-gradient(0,#dddddd,#dddddd 50%,transparent 50%);
+            background-image: -webkit-linear-gradient(90deg,#dddddd,#dddddd 50%,transparent 50%);
+        }
+        .title_ p{
+            font-size: 17px;
+            color: #000;
+        }
+        .title_ span{
+            width: 4px;
+            height: 40px;
+            background: #009fe8;
+            margin-right: 10px;
+        }
+    </style>
+</head>
+<body>
+<div class="api_layout" id="api_layout">
+    <div>
+        <div class="title_">
+            <span></span>
+            <p id="titles_"></p>
+        </div>
+        <ul class="aui-list aui-list-in" id="dataContent"></ul>
+    </div>
+</div>
+<div class="noText hide">
+    <img src="../../image/noText.png" alt="">
+</div>
+</body>
+</html>
+<script type="text/template" id="templateQrcode">
+    {{~it:value}}
+    <li class="aui-list-item col_" onclick="openDetails3('{{=value.eName}}','{{=value.oid}}','{{=value.oName}}','','{{=value.eSite}}','{{=value.did}}')">
+        <div class="aui-list-item-inner aui-list-item-arrow">
+            <p>
+                <span>{{=value.eName}}</span>
+                <span>数量:{{=value.eNum}}</span>
+            </p>
+            <span class="spanInfo">单位:{{=value.units}}</span>
+            <span class="spanInfo">型号:{{=value.types}}</span>
+            <span class="spanInfo">使用地点:{{=value.eSite}}</span>
+        </div>
+    </li>
+    {{~}}
+</script>
+<script type="text/javascript" src="../../script/api.js"></script>
+<!-- <script src="../../script/aui-toast.js" charset="utf-8"></script> -->
+<!-- <script src="../../script/fastclick.min.js" charset="utf-8"></script> -->
+<script src="../../script/doT.min.js" charset="utf-8"></script>
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+    var toast = new auiToast();
+    apiready = function () {
+        detaileFun($api.getStorage('monitorValue3'))
+    };
+    function detaileFun(monitorValue) {
+        toast.loading({
+            title: "加载中",
+            duration: 2000
+        });
+        api.ajax({
+            url: "http://nxjiewei.com/colliery-system/api/page/v1/caBySiteList.html?title="+JSON.parse(monitorValue).title+"&types="+JSON.parse(monitorValue).types+"&oid="+JSON.parse(monitorValue).oid+"&did="+JSON.parse(monitorValue).did+"&pageNumber=0&pageSize=20",
+            method: 'get',
+        },function(ret, err){
+            toast.hide();
+            if (ret && ret.code == 200) {
+                document.getElementById('titles_').innerHTML = JSON.parse(monitorValue).title +">"+ JSON.parse(monitorValue).dep
+                if (ret.content.data != "") {
+                    $apis.html(dataContent,'#templateQrcode',ret.content.data);
+                    $api.addCls($api.dom('.noText'), 'hide')
+                }else {
+                    $apis.html(dataContent,'#templateQrcode',ret.content.data)
+                    $api.removeCls($api.dom('.noText'), 'hide')
+
+                }
+            }else {
+                api.toast({
+                    msg: '加载超时,请检查网络',
+                    duration: 2000,
+                    location: 'bottom'
+                });
+            }
+        });
+    }
+    function openDetails3(t,id,deps,type,Site,ids) {
+        var objs = {title:t,oid:id,dep:deps,types:type,useSite:Site,did:ids};
+        $api.setStorage('monitorValue4',JSON.stringify(objs));
+        $event.openTabLayout('search2_frameDetails4','search2_frameDetails4','智慧矿山')
+    }
+</script>

+ 200 - 0
widget/html/page/search2_frameDetails4.html

@@ -0,0 +1,200 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/aui.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style>
+        @media screen and (-webkit-min-device-pixel-ratio:1.5) {
+            .aui-list{
+                background-image:none!important;
+            }
+        }
+        .aui-list.aui-list-in .aui-list-item{
+            background-size:93% 1px;
+        }
+        .aui-list.aui-list-in .aui-list-item:last-child{
+            background-position:0.75rem bottom;
+        }
+        .api_layout .aui-list .aui-list-item{
+            height: auto;
+            line-height: normal;
+        }
+        .api_layout .aui-list .aui-list-item-inner{
+            height: auto;
+            line-height: normal;
+            padding-top: 10px;
+            padding-bottom: 10px;
+            display: block;
+        }
+        .aui-list-item-arrow:before{
+            border: none;
+        }
+        .aui-list-item-inner.aui-list-item-arrow{
+            padding-right: 0.75rem;
+        }
+        .col_ p{
+            font-size: 15px;
+            color: #121212;
+            width: 100%;
+            display: -webkit-flex;
+            display: flex;
+            justify-content: space-between;
+            -webkit-justify-content: space-between;
+            flex-wrap: nowrap;
+            -webkit-flex-wrap: nowrap;
+            align-items: center;
+            -webkit-align-items: center;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            white-space: nowrap;
+            margin-bottom: 10px;
+        }
+        .col_ p span:last-child{
+            font-size: 14px;
+            color: #6C6F74;
+        }
+        .col_ p span:first-child{
+            width: 72%;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            white-space: nowrap;
+        }
+        .personal_centerInfo img{
+            width: 50px;
+            height: 50px;
+            margin-right: 10px;
+            border: 1px solid #f2f2f2;
+            border-radius: 50%;
+        }
+        .personal_center span{
+            display: block;
+        }
+        .personal_center span:first-child{
+            font-size: 16px;
+        }
+        .personal_center span:last-child{
+            font-size: 15px;
+            color: #a7a5bb;
+        }
+        .personal_centerInfo{
+            padding: 10px 0 10px 0.75rem ;
+            background: #fff;
+        }
+        .spanInfo{
+            display: block;
+            font-size: 14px;
+            color: #6C6F74;
+            margin-bottom: 5px;
+        }
+        .spanInfo:last-child{
+            margin-bottom: 0;
+        }
+        .title_{
+            background: #fff;
+            padding: 5px 0.75rem;
+            display: -webkit-flex;
+            display: flex;
+            justify-content: flex-start;
+            -webkit-justify-content: flex-start;
+            flex-wrap: nowrap;
+            -webkit-flex-wrap: nowrap;
+            align-items: center;
+            -webkit-align-items: center;
+            background-size: 92% 1px;
+            background-repeat: no-repeat;
+            background-position: 0.75rem bottom;
+            background-image: linear-gradient(0,#dddddd,#dddddd 50%,transparent 50%);
+            background-image: -webkit-linear-gradient(90deg,#dddddd,#dddddd 50%,transparent 50%);
+        }
+        .title_ p{
+            font-size: 17px;
+            color: #000;
+        }
+        .title_ span{
+            width: 4px;
+            height: 40px;
+            background: #009fe8;
+            margin-right: 10px;
+        }
+    </style>
+</head>
+<body>
+<div class="api_layout" id="api_layout">
+    <div>
+        <div class="title_">
+            <span></span>
+            <p id="titles_"></p>
+        </div>
+        <ul class="aui-list aui-list-in" id="dataContent"></ul>
+    </div>
+</div>
+<div class="noText hide">
+    <img src="../../image/noText.png" alt="">
+</div>
+</body>
+</html>
+<script type="text/template" id="templateQrcode">
+    {{~it:value}}
+    <li class="aui-list-item col_" onclick="openDetails2('{{=value.url}}')">
+        <div class="aui-list-item-inner aui-list-item-arrow">
+            <p>
+                <span>{{=value.eName}}</span>
+            </p>
+            <span class="spanInfo">型号:{{=value.types}}</span>
+            <span class="spanInfo">规格:{{=value.technical}}</span>
+            <span class="spanInfo">领用单位:{{=value.oName}}</span>
+            <span class="spanInfo">单位:{{=value.units}}</span>
+            <span class="spanInfo">数量:{{=value.eNum}}</span>
+        </div>
+    </li>
+    {{~}}
+</script>
+<script type="text/javascript" src="../../script/api.js"></script>
+<!-- <script src="../../script/aui-toast.js" charset="utf-8"></script> -->
+<!-- <script src="../../script/fastclick.min.js" charset="utf-8"></script> -->
+<script src="../../script/doT.min.js" charset="utf-8"></script>
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+    var toast = new auiToast();
+    apiready = function () {
+        detaileFun($api.getStorage('monitorValue4'))
+    };
+    function detaileFun(monitorValue) {
+        toast.loading({
+            title: "加载中",
+            duration: 2000
+        });
+        api.ajax({
+            url: "http://nxjiewei.com/colliery-system/api/page/v1/caByFromList.html?title="+JSON.parse(monitorValue).title+"&types="+JSON.parse(monitorValue).types+"&oid="+JSON.parse(monitorValue).oid+"&useSite="+JSON.parse(monitorValue).useSite+"&did="+JSON.parse(monitorValue).did+"&pageNumber=0&pageSize=20",
+            method: 'get',
+        },function(ret, err){
+            toast.hide();
+            if (ret && ret.code == 200) {
+                document.getElementById('titles_').innerHTML = JSON.parse(monitorValue).title +">"+ JSON.parse(monitorValue).dep+">"+JSON.parse(monitorValue).useSite;
+                if (ret.content.data != "") {
+                    $apis.html(dataContent,'#templateQrcode',ret.content.data);
+                    $api.addCls($api.dom('.noText'), 'hide')
+                }else {
+                    $apis.html(dataContent,'#templateQrcode',ret.content.data)
+                    $api.removeCls($api.dom('.noText'), 'hide')
+
+                }
+            }else {
+                api.toast({
+                    msg: '加载超时,请检查网络',
+                    duration: 2000,
+                    location: 'bottom'
+                });
+            }
+        });
+    }
+    function openDetails2(url) {
+        $api.setStorage('monitorUrl',url);
+        $event.openTabLayout('search_frameDetails4','search_frameDetails4','智慧矿山')
+    }
+</script>

+ 125 - 0
widget/html/page/search_frame0.html

@@ -0,0 +1,125 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style>
+        .contact-list{
+
+        }
+        .contact-list li{
+            padding: 10px 20px;
+            display: flex;
+            justify-content: flex-start;
+            border-bottom: 1px solid #eeeeee;
+        }
+        .personnel-info{
+            display: flex;
+            justify-content: flex-start;
+            align-items: center;
+            margin-right: 50px;
+        }
+        .personnel-info img{
+          width: 45px;
+          height: 45px;
+          border-radius: 100%;
+        }
+        .contact-list .personnel-info>p{
+            width: 45px;
+            height: 45px;
+            text-align: center;
+            line-height: 45px;
+            color: #FFFFFF;
+            font-size: 18px;
+            border-radius: 100%;
+            margin-right: 30px;
+        }
+        .name-dep{
+            line-height: 1.3;
+        }
+        .contact-list li .name-dep p{
+            font-size: 14px;
+            color: #333333;
+        }
+        .contact-list li .name-dep span{
+            font-size: 12px;
+            color: #999999;
+        }
+        .position{
+            font-size: 13px;
+            color: #333333;
+            padding-top: 5px;
+
+        }
+    </style>
+</head>
+<body>
+<div class="api_layout" id="api_layout">
+    <ul class="contact-list" id="Qrcode_itme">
+
+    </ul>
+</div>
+<div class="noText hide">
+  <img src="../../image/noText.png" alt="">
+</div>
+</body>
+</html>
+<script type="text/template" id="templateQrcode">
+    {{~it:value}}
+        <li onclick="openDetails('{{=value.name}}','{{=value.mobile}}','{{=value.avatar}}','{{=value.position}}','{{=value.staff_num}}')">
+            <div class="personnel-info">
+              {{?value.avatar != null}}
+                <img src="{{=value.avatar}}" alt="">
+              {{??}}
+                <p style="background:#{{=Math.floor(Math.random()*16777215).toString(16)}}">{{=value.name.substr(value.name.length-1,1)}}</p>
+              {{?}}
+                <div class="name-dep">
+                    <p>{{=value.name}}</p>
+                    <span>{{=value.section_fullname}}</span>
+                </div>
+            </div>
+            <div class="position">({{=value.position}})</div>
+        </li>
+    {{~}}
+</script>
+<script type="text/javascript" src="../../script/api.js"></script>
+<script src="../../script/doT.min.js" charset="utf-8"></script>
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+    apiready = function () {
+
+    };
+    function seachQrcodeFun0(value) {
+        $http.requestShowProgress(UrlRouter.searchPersonal,'post',{content:value})
+        .then(res=>{
+          if (res.code === 0 && res.data.length>0) {
+            $apis.html(Qrcode_itme,'#templateQrcode',res.data);
+            $api.addCls($api.dom('.noText'), 'hide')
+          }else {
+            $apis.html(Qrcode_itme,'#templateQrcode','')
+            $api.removeCls($api.dom('.noText'), 'hide')
+          }
+        })
+        .catch(err=>{
+            api.toast({
+                msg: '加载超时,请检查网络',
+                duration: 2000,
+                location: 'bottom'
+            });
+        })
+    }
+    function openDetails(name,phone,img,del,staff_num) {
+      var param = {
+          username: name,
+          mobile:phone,
+          avatar:img,
+          delp:del,
+          id:staff_num
+      };
+      $event.openPopup(api.winWidth,'auto','../mail/modul',param)
+    }
+</script>

+ 116 - 0
widget/html/page/search_frame1.html

@@ -0,0 +1,116 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/aui.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style>
+        @media screen and (-webkit-min-device-pixel-ratio:1.5) {
+          .aui-list{
+            background-image:none!important;
+          }
+        }
+        .aui-list.aui-list-in .aui-list-item{
+          background-size:93% 1px;
+        }
+        .aui-list.aui-list-in .aui-list-item:last-child{
+          background-position:0.75rem bottom;
+        }
+        .api_layout .aui-list .aui-list-item{
+          height: 55px;
+          line-height: 55px;
+        }
+        .api_layout .aui-list .aui-list-item-inner{
+          height: 55px;
+          line-height: 55px;
+        }
+        .aui-list-item-arrow:before{
+          border: 1px solid #939393;
+          border-top: none;
+          border-right: none;
+        }
+        .col_ p{
+            font-size: 16px;
+            color: #121212;
+            width: 85%;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            white-space: nowrap;
+        }
+    </style>
+</head>
+<body>
+<div class="api_layout" id="api_layout">
+    <ul class="aui-list aui-list-in" id="Qrcode_itme">
+
+    </ul>
+</div>
+<div class="noText hide">
+  <img src="../../image/noText.png" alt="">
+</div>
+</body>
+</html>
+<script type="text/template" id="templateQrcode">
+  {{~it:value}}
+  <li class="aui-list-item col_" onclick="QRcodeDetaile('{{=value.id}}','{{=value.title}}','{{=value.addLinkUrl}}')">
+      <div class="aui-list-item-inner aui-list-item-arrow">
+          <p>{{=value.title}}</p>
+      </div>
+  </li>
+  {{~}}
+  </script>
+<script type="text/javascript" src="../../script/api.js"></script>
+<script src="../../script/doT.min.js" charset="utf-8"></script>
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+    apiready = function () {
+
+    };
+    function seachQrcodeFun1(value, addLinkUrl) {
+        var data = {
+            title:value,
+            departmentId:'',
+            pageNumber:0,
+            pageSize:0
+        };
+        // var addLinkUrl = addLinkUrl;
+        $http.requestDataLoging(UrlRouter.seachQrcode,'get',data)
+        .then(ret=>{
+          if (ret && ret.code == 200) {
+            if (ret.data != "") {
+              if(addLinkUrl == 'addLinkUrl') {
+                ret.data.forEach(item => {
+                  item.addLinkUrl = addLinkUrl
+                })
+                $apis.html(Qrcode_itme,'#templateQrcode',ret.data);
+              } else {
+                $apis.html(Qrcode_itme,'#templateQrcode',ret.data);
+              }
+              $api.addCls($api.dom('.noText'), 'hide');
+            }else {
+              $apis.html(Qrcode_itme,'#templateQrcode',ret.data);
+              $api.removeCls($api.dom('.noText'), 'hide');
+            }
+          }
+        })
+    }
+    function QRcodeDetaile(pageid,text,addLinkUrl) {
+      if(addLinkUrl == 'addLinkUrl') {
+        api.sendEvent({
+            name: 'handAddLinkUrl',
+            extra: {
+                pageId: pageid,
+                title: text
+            }
+        });
+        api.closeWin();
+      } else {
+        $event.openWin('browseQrcode_win','../browseQrcode/browseQrcode_win',{pageId:pageid,title:text},'');
+      }
+      // $event.openWin('QrcodeDetaile','../Qrcode/QrcodeDetaile',{pageId:pageid,id:'',departmentId:'',flag:false,title:text},'');
+    }
+</script>

+ 113 - 0
widget/html/page/search_frame2.html

@@ -0,0 +1,113 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/aui.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style>
+        @media screen and (-webkit-min-device-pixel-ratio:1.5) {
+            .aui-list{
+                background-image:none!important;
+            }
+        }
+        .aui-list.aui-list-in .aui-list-item{
+            background-size:93% 1px;
+        }
+        .aui-list.aui-list-in .aui-list-item:last-child{
+            background-position:0.75rem bottom;
+        }
+        .api_layout .aui-list .aui-list-item{
+            height: 55px;
+            line-height: 55px;
+        }
+        .api_layout .aui-list .aui-list-item-inner{
+            height: 55px;
+            line-height: 56px;
+        }
+        .aui-list-item-arrow:before{
+            border: 1px solid #939393;
+            border-top: none;
+            border-right: none;
+        }
+        .col_ p{
+            font-size: 16px;
+            color: #121212;
+            width: 72%;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            white-space: nowrap;
+        }
+        .col_ span{
+            font-size: 16px;
+            color: #6C6F74;
+        }
+    </style>
+</head>
+<body>
+<div class="api_layout" id="api_layout">
+    <ul class="aui-list aui-list-in" id="Qrcode_itme">
+
+    </ul>
+</div>
+<div class="noText hide">
+  <img src="../../image/noText.png" alt="">
+</div>
+</body>
+</html>
+<script type="text/template" id="templateQrcode">
+    {{~it:value}}
+    <li class="aui-list-item col_" onclick="openDetails('{{=value.eName}}')">
+        <div class="aui-list-item-inner aui-list-item-arrow">
+            <p>{{=value.eName}}</p>
+            <span>数量:{{=value.eNum}}</span>
+        </div>
+    </li>
+    {{~}}
+</script>
+<script type="text/javascript" src="../../script/api.js"></script>
+<!-- <script src="../../script/aui-toast.js" charset="utf-8"></script> -->
+<!-- <script src="../../script/fastclick.min.js" charset="utf-8"></script> -->
+<script src="../../script/doT.min.js" charset="utf-8"></script>
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+    var toast = new auiToast();
+    apiready = function () {
+
+    };
+    function seachQrcodeFun2(value) {
+        toast.loading({
+            title: "加载中",
+            duration: 2000
+        });
+        api.ajax({
+            url: "http://nxjiewei.com/colliery-system/api/page/v1/caByNameList.html?title="+value+"&eType=2&pageNumber=0&pageSize=999",
+            method: 'get',
+        },function(ret, err){
+          toast.hide();
+            if (ret && ret.code == 200) {
+                if (ret.content.data != "") {
+                    $apis.html(Qrcode_itme,'#templateQrcode',ret.content.data);
+                    $api.addCls($api.dom('.noText'), 'hide')
+                }else {
+                    $apis.html(Qrcode_itme,'#templateQrcode',ret.data)
+                    $api.removeCls($api.dom('.noText'), 'hide')
+
+                }
+              }else {
+               api.toast({
+                   msg: '加载超时,请检查网络',
+                   duration: 2000,
+                   location: 'bottom'
+               });
+            }
+        });
+    }
+    function openDetails(title) {
+        $api.setStorage('titleKey',title);
+        $event.openTabLayout('search2_frameDetails1','search2_frameDetails1','智慧矿山')
+    }
+</script>

+ 202 - 0
widget/html/page/search_frameDetails1.html

@@ -0,0 +1,202 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/aui.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style>
+        @media screen and (-webkit-min-device-pixel-ratio:1.5) {
+            .aui-list{
+                background-image:none!important;
+            }
+        }
+        .aui-list.aui-list-in .aui-list-item{
+            background-size:93% 1px;
+        }
+        .aui-list.aui-list-in .aui-list-item:last-child{
+            background-position:0.75rem bottom;
+        }
+        .api_layout .aui-list .aui-list-item{
+            height: auto;
+            line-height: normal;
+        }
+        .api_layout .aui-list .aui-list-item-inner{
+            height: auto;
+            line-height: normal;
+            padding-top: 10px;
+            padding-bottom: 10px;
+            display: block;
+        }
+        .aui-list-item-arrow:before{
+            border: none;
+        }
+        .aui-list-item-inner.aui-list-item-arrow{
+            padding-right: 0.75rem;
+        }
+        .col_ p{
+            font-size: 15px;
+            color: #121212;
+            width: 100%;
+            display: -webkit-flex;
+            display: flex;
+            justify-content: space-between;
+            -webkit-justify-content: space-between;
+            flex-wrap: nowrap;
+            -webkit-flex-wrap: nowrap;
+            align-items: center;
+            -webkit-align-items: center;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            white-space: nowrap;
+            margin-bottom: 10px;
+        }
+        .col_ p span:last-child{
+            font-size: 14px;
+            color: #6C6F74;
+        }
+        .col_ p span:first-child{
+            width: 72%;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            white-space: nowrap;
+        }
+        .personal_centerInfo img{
+            width: 50px;
+            height: 50px;
+            margin-right: 10px;
+            border: 1px solid #f2f2f2;
+            border-radius: 50%;
+        }
+        .personal_center span{
+            display: block;
+        }
+        .personal_center span:first-child{
+            font-size: 16px;
+        }
+        .personal_center span:last-child{
+            font-size: 15px;
+            color: #a7a5bb;
+        }
+        .personal_centerInfo{
+            padding: 10px 0 10px 0.75rem ;
+            background: #fff;
+        }
+        .spanInfo{
+            display: block;
+            font-size: 14px;
+            color: #6C6F74;
+            margin-bottom: 5px;
+        }
+        .spanInfo:last-child{
+            margin-bottom: 0;
+        }
+        .title_{
+            background: #fff;
+            padding: 5px 0.75rem;
+            display: -webkit-flex;
+            display: flex;
+            justify-content: flex-start;
+            -webkit-justify-content: flex-start;
+            flex-wrap: nowrap;
+            -webkit-flex-wrap: nowrap;
+            align-items: center;
+            -webkit-align-items: center;
+            background-size: 92% 1px;
+            background-repeat: no-repeat;
+            background-position: 0.75rem bottom;
+            background-image: linear-gradient(0,#dddddd,#dddddd 50%,transparent 50%);
+            background-image: -webkit-linear-gradient(90deg,#dddddd,#dddddd 50%,transparent 50%);
+        }
+        .title_ p{
+            font-size: 17px;
+            color: #000;
+        }
+        .title_ span{
+            width: 4px;
+            height: 40px;
+            background: #009fe8;
+            margin-right: 10px;
+        }
+    </style>
+</head>
+<body>
+<div class="api_layout" id="api_layout">
+    <div>
+        <div class="title_">
+            <span></span>
+            <p id="titles_"></p>
+        </div>
+        <ul class="aui-list aui-list-in" id="dataContent"></ul>
+    </div>
+</div>
+<div class="noText hide">
+    <img src="../../image/noText.png" alt="">
+</div>
+</body>
+</html>
+<script type="text/template" id="templateQrcode">
+    {{~it:value}}
+        <li class="aui-list-item col_" onclick="openDetails2('{{=value.eName}}','{{=value.oid}}','{{=value.oName}}')">
+            <div class="aui-list-item-inner aui-list-item-arrow">
+                <p>
+                    <span>{{=value.eName}}</span>
+                    <span>数量:{{=value.eNum}}</span>
+                </p>
+                <span class="spanInfo">单位:{{=value.units}}</span>
+                <!-- <span class="spanInfo">规格型号:{{=value.types}}</span> -->
+                <span class="spanInfo">使用地点:{{=value.oName}}</span>
+            </div>
+        </li>
+    {{~}}
+</script>
+<script type="text/javascript" src="../../script/api.js"></script>
+<!-- <script src="../../script/aui-toast.js" charset="utf-8"></script> -->
+<!-- <script src="../../script/fastclick.min.js" charset="utf-8"></script> -->
+<script src="../../script/doT.min.js" charset="utf-8"></script>
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+    var toast = new auiToast();
+    apiready = function () {
+      detaileFun($api.getStorage('titleKey'))
+    };
+    function detaileFun(values) {
+        toast.loading({
+            title: "加载中",
+            duration: 2000
+        });
+        api.ajax({
+            url: "http://nxjiewei.com/colliery-system/api/page/v1/eqByOrgPage.html?title="+values+"&pageNumber=0&pageSize=20",
+            method: 'get',
+            dataType:'json',
+        },function(ret, err){
+            toast.hide();
+            if (ret && ret.code == 200) {
+                document.getElementById('titles_').innerHTML = values;
+                if (ret.content.data != "") {
+                    $apis.html(dataContent,'#templateQrcode',ret.content.data);
+                    $api.addCls($api.dom('.noText'), 'hide')
+                }else {
+                    $apis.html(dataContent,'#templateQrcode',ret.content.data)
+                    $api.removeCls($api.dom('.noText'), 'hide')
+
+                }
+            }else {
+                api.toast({
+                    msg: '加载超时,请检查网络',
+                    duration: 2000,
+                    location: 'bottom'
+                });
+            }
+        });
+    }
+    // 详情
+    function openDetails2(t,id,deps) {
+        var objs = {title:t,oid:id,dep:deps};
+        $api.setStorage('monitorValue',JSON.stringify(objs));
+        $event.openTabLayout('search_frameDetails2','search_frameDetails2','智慧矿山')
+    }
+</script>

+ 200 - 0
widget/html/page/search_frameDetails2.html

@@ -0,0 +1,200 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/aui.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style>
+        @media screen and (-webkit-min-device-pixel-ratio:1.5) {
+            .aui-list{
+                background-image:none!important;
+            }
+        }
+        .aui-list.aui-list-in .aui-list-item{
+            background-size:93% 1px;
+        }
+        .aui-list.aui-list-in .aui-list-item:last-child{
+            background-position:0.75rem bottom;
+        }
+        .api_layout .aui-list .aui-list-item{
+            height: auto;
+            line-height: normal;
+        }
+        .api_layout .aui-list .aui-list-item-inner{
+            height: auto;
+            line-height: normal;
+            padding-top: 10px;
+            padding-bottom: 10px;
+            display: block;
+        }
+        .aui-list-item-arrow:before{
+            border: none;
+        }
+        .aui-list-item-inner.aui-list-item-arrow{
+            padding-right: 0.75rem;
+        }
+        .col_ p{
+            font-size: 15px;
+            color: #121212;
+            width: 100%;
+            display: -webkit-flex;
+            display: flex;
+            justify-content: space-between;
+            -webkit-justify-content: space-between;
+            flex-wrap: nowrap;
+            -webkit-flex-wrap: nowrap;
+            align-items: center;
+            -webkit-align-items: center;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            white-space: nowrap;
+            margin-bottom: 10px;
+        }
+        .col_ p span:last-child{
+            font-size: 14px;
+            color: #6C6F74;
+        }
+        .col_ p span:first-child{
+            width: 72%;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            white-space: nowrap;
+        }
+        .personal_centerInfo img{
+            width: 50px;
+            height: 50px;
+            margin-right: 10px;
+            border: 1px solid #f2f2f2;
+            border-radius: 50%;
+        }
+        .personal_center span{
+            display: block;
+        }
+        .personal_center span:first-child{
+            font-size: 16px;
+        }
+        .personal_center span:last-child{
+            font-size: 15px;
+            color: #a7a5bb;
+        }
+        .personal_centerInfo{
+            padding: 10px 0 10px 0.75rem ;
+            background: #fff;
+        }
+        .spanInfo{
+            display: block;
+            font-size: 14px;
+            color: #6C6F74;
+            margin-bottom: 5px;
+        }
+        .spanInfo:last-child{
+            margin-bottom: 0;
+        }
+        .title_{
+            background: #fff;
+            padding: 5px 0.75rem;
+            display: -webkit-flex;
+            display: flex;
+            justify-content: flex-start;
+            -webkit-justify-content: flex-start;
+            flex-wrap: nowrap;
+            -webkit-flex-wrap: nowrap;
+            align-items: center;
+            -webkit-align-items: center;
+            background-size: 92% 1px;
+            background-repeat: no-repeat;
+            background-position: 0.75rem bottom;
+            background-image: linear-gradient(0,#dddddd,#dddddd 50%,transparent 50%);
+            background-image: -webkit-linear-gradient(90deg,#dddddd,#dddddd 50%,transparent 50%);
+        }
+        .title_ p{
+            font-size: 17px;
+            color: #000;
+        }
+        .title_ span{
+            width: 4px;
+            height: 40px;
+            background: #009fe8;
+            margin-right: 10px;
+        }
+    </style>
+</head>
+<body>
+<div class="api_layout" id="api_layout">
+    <div>
+        <div class="title_">
+            <span></span>
+            <p id="titles_"></p>
+        </div>
+        <ul class="aui-list aui-list-in" id="dataContent"></ul>
+    </div>
+</div>
+<div class="noText hide">
+    <img src="../../image/noText.png" alt="">
+</div>
+</body>
+</html>
+<script type="text/template" id="templateQrcode">
+    {{~it:value}}
+    <li class="aui-list-item col_" onclick="openDetails2('{{=value.eName}}','{{=value.oid}}','{{=value.oName}}','{{=value.types}}','{{=value.eSite}}')">
+        <div class="aui-list-item-inner aui-list-item-arrow">
+            <p>
+                <span>{{=value.eName}}</span>
+                <span>数量:{{=value.eNum}}</span>
+            </p>
+            <span class="spanInfo">单位:{{=value.units}}</span>
+             <span class="spanInfo">规格型号:{{=value.types}}</span>
+            <span class="spanInfo">使用地点:{{=value.oName}}</span>
+        </div>
+    </li>
+    {{~}}
+</script>
+<script type="text/javascript" src="../../script/api.js"></script>
+<!-- <script src="../../script/aui-toast.js" charset="utf-8"></script> -->
+<!-- <script src="../../script/fastclick.min.js" charset="utf-8"></script> -->
+<script src="../../script/doT.min.js" charset="utf-8"></script>
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+    var toast = new auiToast();
+    apiready = function () {
+        detaileFun($api.getStorage('monitorValue'))
+    };
+    function detaileFun(monitorValue) {
+        toast.loading({
+            title: "加载中",
+            duration: 2000
+        });
+        api.ajax({
+            url: "http://nxjiewei.com/colliery-system/api/page/v1/eqBySiteList.html?title="+JSON.parse(monitorValue).title+"&oid="+JSON.parse(monitorValue).oid+"&pageNumber=0&pageSize=20",
+            method: 'get',
+        },function(ret, err){
+            toast.hide();
+            if (ret && ret.code == 200) {
+                document.getElementById('titles_').innerHTML = JSON.parse(monitorValue).title +">"+ JSON.parse(monitorValue).dep;
+                if (ret.content.data != "") {
+                    $apis.html(dataContent,'#templateQrcode',ret.content.data);
+                    $api.addCls($api.dom('.noText'), 'hide')
+                }else {
+                    $apis.html(dataContent,'#templateQrcode',ret.content.data)
+                    $api.removeCls($api.dom('.noText'), 'hide')
+
+                }
+            }else {
+                api.toast({
+                    msg: '加载超时,请检查网络',
+                    duration: 2000,
+                    location: 'bottom'
+                });
+            }
+        });
+    }
+    function openDetails2(t,id,deps,type,Site) {
+        var objs = {title:t,oid:id,dep:deps,types:type,useSite:Site};
+        $api.setStorage('monitorValue3',JSON.stringify(objs));
+        $event.openTabLayout('search_frameDetails3','search_frameDetails3','智慧矿山')
+    }
+</script>

+ 204 - 0
widget/html/page/search_frameDetails3.html

@@ -0,0 +1,204 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/aui.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style>
+        @media screen and (-webkit-min-device-pixel-ratio:1.5) {
+            .aui-list{
+                background-image:none!important;
+            }
+        }
+        .aui-list.aui-list-in .aui-list-item{
+            background-size:93% 1px;
+        }
+        .aui-list.aui-list-in .aui-list-item:last-child{
+            background-position:0.75rem bottom;
+        }
+        .api_layout .aui-list .aui-list-item{
+            height: auto;
+            line-height: normal;
+        }
+        .api_layout .aui-list .aui-list-item-inner{
+            height: auto;
+            line-height: normal;
+            padding-top: 10px;
+            padding-bottom: 10px;
+            display: block;
+        }
+        .aui-list-item-arrow:before{
+            border: none;
+        }
+        .aui-list-item-inner.aui-list-item-arrow{
+            padding-right: 0.75rem;
+        }
+        .col_ p{
+            font-size: 15px;
+            color: #121212;
+            width: 100%;
+            display: -webkit-flex;
+            display: flex;
+            justify-content: space-between;
+            -webkit-justify-content: space-between;
+            flex-wrap: nowrap;
+            -webkit-flex-wrap: nowrap;
+            align-items: center;
+            -webkit-align-items: center;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            white-space: nowrap;
+            margin-bottom: 10px;
+        }
+        .col_ p span:last-child{
+            font-size: 14px;
+            color: #6C6F74;
+        }
+        .col_ p span:first-child{
+            width: 72%;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            white-space: nowrap;
+        }
+        .personal_centerInfo img{
+            width: 50px;
+            height: 50px;
+            margin-right: 10px;
+            border: 1px solid #f2f2f2;
+            border-radius: 50%;
+        }
+        .personal_center span{
+            display: block;
+        }
+        .personal_center span:first-child{
+            font-size: 16px;
+        }
+        .personal_center span:last-child{
+            font-size: 15px;
+            color: #a7a5bb;
+        }
+        .personal_centerInfo{
+            padding: 10px 0 10px 0.75rem ;
+            background: #fff;
+        }
+        .spanInfo{
+            display: block;
+            font-size: 14px;
+            color: #6C6F74;
+            margin-bottom: 5px;
+        }
+        .spanInfo:last-child{
+            margin-bottom: 0;
+        }
+        .title_{
+            background: #fff;
+            padding: 5px 0.75rem;
+            display: -webkit-flex;
+            display: flex;
+            justify-content: flex-start;
+            -webkit-justify-content: flex-start;
+            flex-wrap: nowrap;
+            -webkit-flex-wrap: nowrap;
+            align-items: center;
+            -webkit-align-items: center;
+            background-size: 92% 1px;
+            background-repeat: no-repeat;
+            background-position: 0.75rem bottom;
+            background-image: linear-gradient(0,#dddddd,#dddddd 50%,transparent 50%);
+            background-image: -webkit-linear-gradient(90deg,#dddddd,#dddddd 50%,transparent 50%);
+        }
+        .title_ p{
+            font-size: 17px;
+            color: #000;
+        }
+        .title_ span{
+            width: 4px;
+            height: 40px;
+            background: #009fe8;
+            margin-right: 10px;
+        }
+    </style>
+</head>
+<body>
+<div class="api_layout" id="api_layout">
+    <div>
+        <div class="title_">
+            <span></span>
+            <p id="titles_"></p>
+        </div>
+        <ul class="aui-list aui-list-in" id="dataContent"></ul>
+    </div>
+</div>
+<div class="noText hide">
+    <img src="../../image/noText.png" alt="">
+</div>
+</body>
+</html>
+<script type="text/template" id="templateQrcode">
+    {{~it:value}}
+    <li class="aui-list-item col_" onclick="openDetails2('{{=value.url}}')">
+        <div class="aui-list-item-inner aui-list-item-arrow">
+            <p>
+                <span>{{=value.eName}}</span>
+            </p>
+            <span class="spanInfo">规格型号:{{=value.types}}</span>
+            <span class="spanInfo">主要技术参数:{{=value.technical}}</span>
+            <span class="spanInfo">生产厂家:{{=value.manufacturer}}</span>
+            <span class="spanInfo">出厂日期:{{=value.fDate}}</span>
+            <span class="spanInfo">出厂编号:{{=value.fNum}}</span>
+            <span class="spanInfo">单位:{{=value.units}}</span>
+            <span class="spanInfo">数量:{{=value.eNum}}</span>
+            <span class="spanInfo">矿编号:{{=value.cNum}}</span>
+            <span class="spanInfo">备注:{{=value.remark}}</span>
+        </div>
+    </li>
+    {{~}}
+</script>
+<script type="text/javascript" src="../../script/api.js"></script>
+<!-- <script src="../../script/aui-toast.js" charset="utf-8"></script> -->
+<!-- <script src="../../script/fastclick.min.js" charset="utf-8"></script> -->
+<script src="../../script/doT.min.js" charset="utf-8"></script>
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+    var toast = new auiToast();
+    apiready = function () {
+        detaileFun($api.getStorage('monitorValue3'))
+    };
+    function detaileFun(monitorValue) {
+        toast.loading({
+            title: "加载中",
+            duration: 2000
+        });
+        api.ajax({
+            url: "http://nxjiewei.com/colliery-system/api/page/v1/eqByFromList.html?title="+JSON.parse(monitorValue).title+"&types="+JSON.parse(monitorValue).types+"&oid="+JSON.parse(monitorValue).oid+"&useSite="+JSON.parse(monitorValue).useSite+"&pageNumber=0&pageSize=20",
+            method: 'get',
+        },function(ret, err){
+            toast.hide();
+            if (ret && ret.code == 200) {
+                document.getElementById('titles_').innerHTML = JSON.parse(monitorValue).title +">"+ JSON.parse(monitorValue).dep+">"+JSON.parse(monitorValue).useSite;
+                if (ret.content.data != "") {
+                    $apis.html(dataContent,'#templateQrcode',ret.content.data);
+                    $api.addCls($api.dom('.noText'), 'hide')
+                }else {
+                    $apis.html(dataContent,'#templateQrcode',ret.content.data)
+                    $api.removeCls($api.dom('.noText'), 'hide')
+
+                }
+            }else {
+                api.toast({
+                    msg: '加载超时,请检查网络',
+                    duration: 2000,
+                    location: 'bottom'
+                });
+            }
+        });
+    }
+    function openDetails2(url) {
+        $api.setStorage('monitorUrl',url);
+        $event.openTabLayout('search_frameDetails4','search_frameDetails4','智慧矿山')
+    }
+</script>

+ 59 - 0
widget/html/page/search_frameDetails4.html

@@ -0,0 +1,59 @@
+<!doctype html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <meta name="format-detection"content="telephone=no">
+    <title>index</title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/style.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style media="screen">
+        body,html{
+            margin: 0;
+            background: #fff;
+        }
+    </style>
+</head>
+<body>
+
+</body>
+</html>
+<script type="text/javascript" src="../../script/api.js"></script>
+<!-- <script src="../../script/fastclick.min.js"></script> -->
+<script src="../../script/config.js"></script>
+<script type="text/javascript">
+    apiready = function () {
+        $api.fixStatusBar($api.dom('header') );
+        detaile($api.getStorage('monitorUrl'))
+    }
+    // 详情
+    function detaile(url) {
+        var browser = api.require('webBrowser');
+        browser.openView({
+            url: url,
+            rect: {
+                x: 0,
+                y: 70,
+                w: api.winWidth,
+                h: $api.winHeight
+            }
+        }, function(ret, err) {
+            switch (ret.state) {
+                case 0:
+                    break;
+                case 1:
+                    break;
+                case 2:
+                    break;
+                case 3:
+                    break;
+                case 4:
+                    break;
+                default:
+                    break;
+            }
+        });
+    }
+</script>

+ 278 - 0
widget/html/page/search_win.html

@@ -0,0 +1,278 @@
+<!doctype html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <meta name="format-detection"content="telephone=no">
+    <title>index</title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style media="screen">
+        body,html{
+            margin: 0;
+            background: #fff;
+        }
+        .aui-searchbar{
+            width: 86%;
+            height: 50px;
+            margin-left: 40px;
+            background-color: transparent;
+        }
+        .aui-searchbar .aui-searchbar-btn{
+            color: #fff;
+        }
+        .aui-searchbar-input{
+            background: #fff;
+        }
+        .aui-searchbar-input input{
+            color: #000;
+        }
+        #search-input::placeholder{
+            color: #ccc;
+            font-size: 14px;
+        }
+        .search_ico{
+            width: 16px;
+            height: 16px;
+            display: block;
+            position: absolute;
+            background: url("../../image/search.png") no-repeat;
+            background-size: cover;
+            top: 8px;
+            left: 17px;
+        }
+        .backBtn{
+            margin-left: 5px;
+        }
+        #search-input{
+            font-size: 14px;
+            height: 28px;
+        }
+        .aui-searchbar-input{
+            margin-right: 60px;
+        }
+        .search_btn{
+            position: absolute;
+            bottom: 9px;
+            right: 10px;
+            width: 54px;
+            height: 31px;
+            line-height: 31px;
+            -webkit-border-radius: 50px;
+            -moz-border-radius: 50px;
+            border-radius: 50px;
+            color: #000;
+            background: #fff;
+            font-size: 13px;
+        }
+        nav{
+            background: #009fe8;
+            position: relative;
+        }
+        .row{
+            padding: 0 30px 24px 30px;
+        }
+        .row li{
+            padding: 5px;
+            color: #72e5ff;
+            font-size: 16px;
+            position: relative;
+        }
+        .row li.selectIndex{
+            color: #fff;
+        }
+        .row li.selectIndex:after{
+            content: '';
+            position: absolute;
+            bottom: 0;
+            left: 0;
+            width: 100%;
+            height: 2px;
+            background: #fff;
+        }
+        .radius_top{
+            width: 100%;
+            height: 10px;
+            background: #fff;
+            border-top-left-radius: 10px;
+            border-top-right-radius: 10px;
+            -webkit-border-top-left-radius: 10px;
+            -webkit-border-top-right-radius: 10px;
+            position: absolute;
+            bottom: 0;
+            left: 0;
+        }
+    </style>
+</head>
+<body>
+<div class="api_layout">
+    <header class="header-login">
+        <img class="backBtn" src="../../image/btn_back.png" alt="" onclick="backIndex()">
+        <div class="aui-searchbar" id="search">
+            <div class="aui-searchbar-input aui-border-radius">
+                <i class="search_ico"></i>
+                <form>
+                    <input type="text" placeholder="搜索" id="search-input">
+                </form>
+            </div>
+            <span class="search_btn" onclick="seacrhWinFun(inputValue)">搜索</span>
+        </div>
+    </header>
+    <nav>
+        <ul class="row flex-space">
+            <li class="selectIndex" onclick="randomSwitchBtn(this)">通讯录</li>
+            <li onclick="randomSwitchBtn(this)">二维码</li>
+            <!-- <li onclick="randomSwitchBtn(this)">固定电缆</li> -->
+            <!-- <li onclick="randomSwitchBtn(this)">添加人</li> -->
+        </ul>
+        <div class="radius_top"></div>
+    </nav>
+</div>
+</body>
+</html>
+<script type="text/javascript" src="../../script/api.js"></script>
+<!-- <script src="../../script/fastclick.min.js" charset="utf-8"></script> -->
+<script type="text/javascript" src="../../script/config.js"></script>
+<script type="text/javascript">
+    var inputValue = '',addLinkUrl = ''
+    apiready = function () {
+        $api.fixStatusBar($api.dom('header') );
+        // api.parseTapmode();
+        // var info = $api.getStorage('data'),
+        //     token = JSON.parse(info).data.access_token;
+        fnInitUIInput();
+        funIniGroup();
+        addLinkUrl = api.pageParam.type;
+
+    };
+    var eHeaderLis,index = 0;
+    function funIniGroup(){
+        eHeaderLis = $api.domAll('.row li'),
+            frames = [];
+        for (var i = 0,len = eHeaderLis.length; i < len; i++) {
+            frames.push( {
+                name: 'search_frame'+i,
+                url: 'search_frame'+i+'.html',
+                bgColor : '#fff',
+                bounces:true
+            } )
+        }
+        api.openFrameGroup({
+            name: 'group',
+            scrollEnabled: true,
+            rect: {
+                x: 0,
+                y: $api.dom('header').offsetHeight+$api.dom('nav').offsetHeight-2,
+                w: api.winWidth,
+                h: $api.winHeight
+            },
+            index: 0,
+            frames: frames
+        }, function (ret, err) {
+            index = ret.index;
+            menuSelected(ret.index);
+
+        });
+    };
+    function menuSelected(index) {
+        for (var i = 0; i < eHeaderLis.length; i++) {
+            if(index == i ){
+                $api.addCls(eHeaderLis[i], 'selectIndex');
+            }else {
+                $api.removeCls(eHeaderLis[i], 'selectIndex');
+            }
+        }
+    }
+    function randomSwitchBtn( tag ) {
+        if( tag == $api.dom('.row li.selectIndex') )return;
+        var eFootLis = $api.domAll('.row li');
+        index = 0;
+        for (var i = 0,len = eFootLis.length; i < len; i++) {
+            if( tag == eFootLis[i] ){
+                index = i;
+            }else{
+                $api.removeCls(eFootLis[i], 'selectIndex');
+            }
+        }
+        $api.addCls( eFootLis[index], 'selectIndex');
+        api.setFrameGroupIndex({
+            name: 'group',
+            index: index
+        });
+    }
+    function backIndex() {
+        api.sendEvent({
+            name: 'userInfo',
+            extra: {
+                key1: 'value1',
+                key2: 'value2'
+            }
+        });
+        api.closeWin();
+    }
+    // input
+    function fnInitUIInput() {
+      var searchText = $api.byId('search-input');
+      var rect = $api.offset(searchText);
+      var UIInput = api.require('UIInput');
+      UIInput.open({
+          rect: {
+              x: rect.l,
+              y: rect.t+1,
+              w: rect.w,
+              h: rect.h-1
+          },
+          styles: {
+              bgColor: '#fff',
+              size: 14,
+              color: '#000',
+              placeholder: {
+                  color: '#ccc'
+              }
+          },
+          autoFocus: false,
+          maxRows: 1,
+          placeholder: '搜索',
+          keyboardType: 'search',
+          fixedOn: api.frameName
+      }, function(ret, err) {
+          if (ret) {
+              var uiInputId = ret.id;
+              if (ret && ret.eventType == "show") {
+                  setTimeout(function() {
+                      UIInput.popupKeyboard({id: uiInputId});
+                  }, 300)
+              } else if (ret.eventType == "search") {
+                  UIInput.value({
+                      id: uiInputId
+                  }, function(ret, err) {
+                      if (ret) {
+                          if (ret.status) {
+                            seacrhWinFun(ret.msg);
+                          }
+                      }
+                  });
+              }else if (ret.eventType == "change") {
+                UIInput.value({
+                    id: uiInputId
+                }, function(ret, err) {
+                    if (ret) {
+                        if (ret.status) {
+                          inputValue = ret.msg;
+                        }
+                    }
+                });
+            }
+          }
+      });
+    }
+    // 查询
+  function seacrhWinFun(text) {
+      api.execScript({
+          name: 'search_win',
+          frameName: 'search_frame'+index,
+          script: 'seachQrcodeFun'+index+'("'+text+'","'+addLinkUrl+'");'
+      });
+    }
+</script>

+ 114 - 0
widget/html/page/tailoring.html

@@ -0,0 +1,114 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/aui.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/style.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style media="screen">
+      .btn{
+           position: absolute;;
+           left: 0;
+           bottom: 0;
+           width: 100%;
+           color: #fff;
+           display: flex;
+           justify-content: space-around;
+           height: 50px;
+           line-height: 50px;
+           background: #000;
+      }
+      .btn span{
+        display: block;
+        padding: 0 20px;
+      }
+    </style>
+</head>
+<body style="background-color:#fff;">
+  <div class="btn">
+      <span tapmode="hover" onclick="fnClose()">取消</span>
+      <span tapmode="hover" onclick="reset()">重置</span>
+      <span tapmode="hover" onclick="saveFun()">确认</span>
+    </div>
+</body>
+</html>
+<script type="text/javascript" src="../../script/api.js"></script>
+<script type="text/javascript">
+  apiready=function () {
+    var imgPath = api.pageParam.tailoring;
+    openTailor(imgPath)
+  };
+  function openTailor(url) {
+    var FNImageClip = api.require('FNImageClip');
+    FNImageClip.open({
+        rect: {
+            x: 0,
+            y: 0,
+            w: api.frameWidth,
+            h: api.frameHeight - 50 +'px'
+        },
+        highDefinition:true,
+        srcPath: url,
+        style: {
+            mask: 'rgba(0,0,0,0.6)',
+            clip: {
+                w: 300,
+                h: 300,
+                x: 50,
+                y: 50,
+                borderColor: '#000',
+                borderWidth: 1,
+                appearance: 'rectangle'
+            }
+        },
+        fixedOn: api.frameName,
+        }, function(ret, err) {
+            if (ret) {
+
+            } else {
+
+            }
+        });
+  }
+// 取消
+   function fnClose() {
+     var FNImageClip = api.require('FNImageClip');
+    FNImageClip.close();
+    api.closeFrame({
+    });
+   }
+// 保存
+function saveFun() {
+  var FNImageClip = api.require('FNImageClip');
+  var timestamp = new Date().getTime();
+     FNImageClip.save({
+         destPath: 'fs://image/' + timestamp + '.jpg',
+         copyToAlbum: true,
+         quality: 1
+     }, function(ret, err) {
+         if (ret) {
+           console.log(JSON.stringify(ret));
+           api.execScript({
+                frameName: 'frame4',
+                script:  'uploadUrl("'+ ret.destPath +'");'
+            });
+            api.execScript({
+                 frameName: 'frame4',
+                 script:  'uploadHead("'+ ret.destPath +'");'
+             });
+            fnClose();
+         } else {
+
+         }
+     });
+ }
+ // 重置
+ function reset() {
+   var FNImageClip = api.require('FNImageClip');
+   FNImageClip.reset();
+ }
+</script>

+ 115 - 0
widget/html/personalData/collectionList.html

@@ -0,0 +1,115 @@
+
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title>生产数据</title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <!--<link rel="stylesheet" type="text/css" href="../../css/aui.css"/>-->
+    <link rel="stylesheet" type="text/css" href="../../css/popoPicker.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/style.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style>
+        body,html{
+            background: #F5F5F5;
+        }
+        .api_layout{
+            /*border-top: 1px solid #37b0e9;*/
+            /*padding: 13px 10px;*/
+            -webkit-box-sizing: border-box;
+            -moz-box-sizing: border-box;
+            box-sizing: border-box;
+        }
+
+        .collectionl_listContainer {
+          display: flex;
+          justify-content: space-between;
+          align-items: center;
+          background: #fff;
+          padding: 10px;
+          margin-top: 5px;
+        }
+
+        .collectionl_listContainer div:first-child {
+          display: flex;
+          justify-content: flex-start;
+          align-items: center;
+          margin-left: 15px;
+        }
+
+        .collectionl_listContainer div:first-child .page_name {
+          margin-left: 10px;
+        }
+
+        .collectionl_listContainer div:first-child img{
+          width: 45px;
+          height: 45px;
+        }
+
+
+        .collectionl_listContainer div:last-child {
+          margin-right: 20px;
+        }
+        .collectionl_listContainer div:last-child img {
+          width: 15px;
+          height: 15px;
+        }
+    </style>
+</head>
+<body>
+<div class="api_layout">
+  <div id="collectionListContainer"></div>
+</div>
+
+<script type="text/template" id="collectionListTemplate">
+  {{~it:value}}
+    <div class="collectionl_listContainer" onclick="openBrowseQrcode('{{=value.pageId}}','{{=value.pageName}}')">
+      <div>
+        <img src="{{=value.url}}" alt="">
+        <div class="page_name">{{=value.pageName}}</div>
+      </div>
+      <div><img src="../../image/more.png" alt=""></div>
+    </div>
+  {{~}}
+</script>
+<script src="../../script/api.js"></script>
+<script src="../../script/popoPicker.js"></script>
+<script src="../../script/doT.min.js"></script>
+ <script src="../../script/f2.js"></script>
+<script src="../../script/config.js"></script>
+<script>
+    var userNo = '';
+    apiready = function () {
+      var info = $api.getStorage('data');
+      userNo = JSON.parse(info).data.user.staff_num;
+      api.addEventListener({
+          name: 'getCollectionListEvent'
+      }, function(ret, err) {
+          getCollectionList()
+      });
+      getCollectionList()
+    };
+    function getCollectionList() {
+      let query = {
+        userNo: userNo,
+        pageNum: 1,
+        pageSize: 10
+      }
+      $http.requestDataLoging(UrlRouter.getSelectPageCollect,'get',query).then(res => {
+        if(res.status === 20000) {
+          $apis.html(collectionListContainer, '#collectionListTemplate', res.data);
+        }
+      }).catch(err => {
+        console.log(JSON.stringify(err));
+      })
+    }
+
+    // 详情
+    function openBrowseQrcode(pageId,pageName) {
+      $event.openWin('browseQrcode_win','../browseQrcode/browseQrcode_win',{pageId:pageId,title:pageName},'');
+    }
+</script>
+</body>
+</html>

+ 164 - 0
widget/html/personalData/handwrittenSignature.html

@@ -0,0 +1,164 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0" />
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css" />
+    <style>
+        html,
+        body {
+            position: relative;
+        }
+
+        .handle_operation_item {
+            margin: 0 15px;
+            height: 30px;
+            position: fixed;
+            left: 0;
+            top: 220px;
+        }
+
+        .handle_operation_item_child ul {
+            margin: 0 15px;
+            height: 40px;
+            display: flex;
+            justify-content: space-between;
+        }
+
+        .handle_operation_item_child ul li {
+            width: 80px;
+            height: 30px;
+            line-height: 30px;
+            text-align: center;
+            border-radius: 3px;
+            color: #fff;
+        }
+
+        .handle_cancel {
+            background: #f5222d
+        }
+
+        .handle_preservation {
+            background: #1890ff;
+            margin-left: 30px;
+        }
+
+        .handle_revoke {
+            background: #bfbfbf;
+            margin-left: 30px;
+        }
+    </style>
+</head>
+
+<body>
+    <div class="handle_operation_item">
+        <div class="handle_operation_item_child">
+            <ul>
+                <li class="handle_cancel" onclick="handleCancel()">取消</li>
+                <li class="handle_revoke" onclick="handleRevoke()">撤销</li>
+                <li class="handle_preservation" onclick="saveSignature()">保存</li>
+            </ul>
+        </div>
+    </div>
+</body>
+
+</html>
+<script type="text/javascript" src="../../script/api.js"></script>
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+    var headers
+    apiready = function() {
+        var info = $api.getStorage('data'),
+            token = JSON.parse(info).data.access_token;
+        headers = {
+            "Authorization": "Bearer " + token
+        };
+        handwrittenSignature();
+    };
+
+    // 手写签名
+    function handwrittenSignature() {
+        var drawingBoard = api.require('drawingBoard');
+        drawingBoard.open({
+            rect: {
+                x: 0,
+                y: 70,
+                w: '100%',
+                h: 200
+            },
+            styles: {
+                brush: {
+                    color: '#232627',
+                    width: 6
+                },
+                bgColor: '#f5f5f5'
+            },
+            fixedOn: api.frameName
+        });
+    }
+
+    // 保存签名
+    function saveSignature() {
+        var drawingBoard = api.require('drawingBoard');
+        var timestamp = new Date().getTime()
+        drawingBoard.save({
+            savePath: 'fs://drawingBoard' + timestamp + '.png',
+            copyToAlbum: false,
+            overlay: true
+        }, function(ret) {
+            api.ajax({
+                url: UrlRouter.handleUpLoadSignature,
+                method: 'post',
+                headers: headers,
+                data: {
+                    files: {
+                        sign: ret.absolutePath
+                    }
+                }
+            }, function(ret, err) {
+                if (ret) {
+                    if (ret.code == 0) {
+                        api.toast({
+                            msg: '上传成功',
+                            duration: 2000,
+                            location: 'top'
+                        });
+                        api.closeWin();
+                        // 将签名图片在个人基本信息做更新
+                        api.sendEvent({
+                            name: 'updateUserInfo',
+                            extra: {}
+                        });
+                    } else {
+                        api.toast({
+                            msg: '上传失败',
+                            duration: 2000,
+                            location: 'top'
+                        });
+                    }
+                } else {
+                    api.toast({
+                        msg: '网络错误',
+                        duration: 2000,
+                        location: 'top'
+                    });
+                }
+            });
+        });
+    }
+
+    //  取消签名
+    function handleCancel() {
+        var drawingBoard = api.require('drawingBoard');
+        drawingBoard.clear();
+    }
+
+    // 撤销上次写的容
+    function handleRevoke() {
+        var drawingBoard = api.require('drawingBoard');
+        drawingBoard.revoke();
+    }
+</script>

+ 127 - 0
widget/html/personalData/personal.html

@@ -0,0 +1,127 @@
+<!doctype html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <meta name="format-detection"content="telephone=no">
+    <title>index</title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/style.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style media="screen">
+      body,html{
+        margin: 0;
+        background: #fff;
+      }
+    </style>
+</head>
+<body>
+  <div class="api_layout">
+    <header class="header-login">
+       <img class="backBtn" src="../../image/btn_back.png" alt="" tapmode onclick="backIndex()">
+       <p class="api_text">个人资料</p>
+    </header>
+    <div class="api_nav">
+      <div class="header-nav scroller nav-haohuo" id="navScroll">
+          <ul class="header-nav-items flex-wrap">
+              <li class="active flex-con" tapmode="active" onclick="randomSwitchBtn(this)">
+                  基本信息
+              </li>
+              <li class="flex-con" tapmode="active" onclick="randomSwitchBtn(this)">
+                  初始学历
+              </li>
+              <li class="flex-con" tapmode="active" onclick="randomSwitchBtn(this)">
+                  最高学历
+              </li>
+          </ul>
+      </div>
+    </div>
+  </div>
+</body>
+</html>
+<script type="text/javascript" src="../../script/api.js"></script>
+<script type="text/javascript">
+    apiready = function () {
+        $api.fixStatusBar($api.dom('header') );
+        api.parseTapmode();
+        var info = $api.getStorage('data'),
+        token = JSON.parse(info).data.access_token;
+        funIniGroup(token);
+        keybackFun();
+    }
+    var eHeaderLis;
+    function funIniGroup(token){
+            eHeaderLis = $api.domAll('.header-nav-items li'),
+            frames = [];
+        for (var i = 0,len = eHeaderLis.length; i < len; i++) {
+            frames.push( {
+                name: 'personal_frame'+i,
+                url: 'personal_frame'+i+'.html',
+                bgColor : '#f2f2f2',
+                bounces:true,
+                pageParam:{
+                  data:token
+                },
+            } )
+        }
+        api.openFrameGroup({
+            name: 'group',
+            scrollEnabled: true,
+            rect: {
+                x: 0,
+                y: $api.dom('header').offsetHeight+$api.dom('.api_nav').offsetHeight,
+                w: api.winWidth,
+                h: $api.winHeight
+            },
+            preload:0,
+            index: 0,
+            frames: frames
+        }, function (ret, err) {
+            menuSelected(ret.index);
+        });
+    };
+    function menuSelected(index) {
+        for (var i = 0; i < eHeaderLis.length; i++) {
+          if(index == i ){
+            $api.addCls(eHeaderLis[i], 'active');
+          }else {
+            $api.removeCls(eHeaderLis[i], 'active');
+          }
+        }
+    }
+    function randomSwitchBtn( tag ) {
+        if( tag == $api.dom('.header-nav-items li.active') )return;
+        var eFootLis = $api.domAll('.header-nav-items li');
+            index = 0;
+        for (var i = 0,len = eFootLis.length; i < len; i++) {
+            if( tag == eFootLis[i] ){
+                index = i;
+            }else{
+                $api.removeCls(eFootLis[i], 'active');
+            }
+        }
+        $api.addCls( eFootLis[index], 'active');
+        api.setFrameGroupIndex({
+            name: 'group',
+            index: index
+        });
+    }
+    function backIndex() {
+      api.sendEvent({
+        name: 'userInfo'
+      });
+      api.closeWin();
+    }
+    // 监听物理返回键
+    function keybackFun() {
+      api.addEventListener({
+          name: 'keyback'
+        }, function(ret, err){
+          api.sendEvent({
+            name: 'userInfo'
+          });
+          api.closeWin();
+      });
+    }
+</script>

+ 395 - 0
widget/html/personalData/personal_frame0.html

@@ -0,0 +1,395 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0" />
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css" />
+    <link rel="stylesheet" type="text/css" href="../../css/aui.css" />
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style>
+        .api_layout {
+            width: 100%;
+            position: relative;
+        }
+
+        .aui-list .aui-list-item {
+            border-bottom: 1px #ddd;
+        }
+
+        .aui-toast {
+            width: 125px;
+        }
+
+        .api-toast {
+            background: rgba(255, 255, 255, 0);
+        }
+
+        .handwritten_signature_container {
+            margin: 0 15px;
+            height: 180px;
+        }
+
+        .signature_container {
+            display: block;
+            width: 100%;
+            /*height: 150px;*/
+        }
+    </style>
+</head>
+
+<body>
+    <div class="api_layout">
+        <ul class="aui-list api_lists">
+            <li class="aui-list-item" style="height:70px;">
+                <div class="aui-list-item-inner" style="height:70px;">
+                    <div class="aui-list-item-title">个人照片</div>
+                    <span class="header_img" id="head_img" onclick="actionSheetFun()"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner" style="padding-right:35px">
+                    <div class="aui-list-item-title">绑定手机号</div>
+                    <span class="api_bind_phone">无</span>
+                    <i class="api_bind_img" onclick="openBind()"></i>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner">
+                    <div class="aui-list-item-title">姓名</div>
+                    <span class="api_name"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner">
+                    <div class="aui-list-item-title">员工编码</div>
+                    <span class="api_num"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner">
+                    <div class="aui-list-item-title">部门</div>
+                    <span class="api_del"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner">
+                    <div class="aui-list-item-title">岗位分类</div>
+                    <span class="api_type"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner">
+                    <div class="aui-list-item-title">岗位</div>
+                    <span class="api_post"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner">
+                    <div class="aui-list-item-title">职级(职务码)</div>
+                    <span class="api_rank"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner">
+                    <div class="aui-list-item-title">性别</div>
+                    <span class="api_sex"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner">
+                    <div class="aui-list-item-title">员工组</div>
+                    <span class="api_contract"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner">
+                    <div class="aui-list-item-title">员工子组</div>
+                    <span class="api_staff"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner">
+                    <div class="aui-list-item-title">籍贯</div>
+                    <span class="api_city"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner">
+                    <div class="aui-list-item-title">宗教信仰</div>
+                    <span class="api_religion"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner">
+                    <div class="aui-list-item-title">户口性质</div>
+                    <span class="api_residence"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner">
+                    <div class="aui-list-item-title">民族</div>
+                    <span class="api_nation"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner">
+                    <div class="aui-list-item-title">出生日期</div>
+                    <span class="api_rirth"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner">
+                    <div class="aui-list-item-title">身份证号</div>
+                    <span class="api_id"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner">
+                    <div class="aui-list-item-title">参加工作时间</div>
+                    <span class="api_job_time"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner">
+                    <div class="aui-list-item-title">进入神华系统时间</div>
+                    <span class="api_time1"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner">
+                    <div class="aui-list-item-title">进入子分公司时间</div>
+                    <span class="api_time2"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner">
+                    <div class="aui-list-item-title">进入本单位时间</div>
+                    <span class="api_time3"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner">
+                    <div class="aui-list-item-title">政治面貌</div>
+                    <span class="api_face"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner">
+                    <div class="aui-list-item-title">参加党派时间</div>
+                    <span class="api_time4"></span>
+                </div>
+            </li>
+            <li class="aui-list-item handwritten_signature" onclick="handwrittenSignature()">
+                <div class="aui-list-item-inner">
+                    <div>手写签名</div>
+                </div>
+            </li>
+            <!-- <li class="handwritten_signature_container">
+              <div class="aui-list-item-inner">
+                <img class="signature_container" src="" alt="">
+              </div>
+            </li> -->
+        </ul>
+        <div class="handwritten_signature_container" onclick="handwrittenSignature()">
+            <img class="signature_container" src="" alt="">
+        </div>
+        <div class="api_bottom">
+            —— 到底了 ——
+        </div>
+    </div>
+</body>
+
+</html>
+<script type="text/javascript" src="../../script/api.js"></script>
+<!-- <script src="../../script/aui-toast.js" charset="utf-8"></script> -->
+<!-- <script src="../../script/fastclick.min.js"></script> -->
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+    apiready = function() {
+        $api.fixStatusBar($api.dom('header'));
+        // 更新个人信息
+        api.addEventListener({
+            name: 'updateUserInfo'
+        }, function(ret, err) {
+            personalCenterInfo()
+        });
+        personalCenterInfo()
+    };
+
+    function openBind() {
+        $event.openTabLayout('bindPhone', '../forgetBind/bindPhone', '绑定手机号', '');
+    }
+    // 个人头像
+    var headImg;
+
+    function actionSheetFun() {
+        api.actionSheet({
+            title: '选择',
+            cancelTitle: '取消',
+            buttons: ['相机', '相册']
+        }, function(ret, err) {
+            if (ret.buttonIndex != 3) {
+                var type = 'camera';
+                if (ret.buttonIndex == 1) {
+                    type = 'camera';
+                } else {
+                    type = 'album';
+                }
+                api.getPicture({
+                    sourceType: type,
+                }, function(ret, err) {
+                    if (ret) {
+                        photoTailoring(ret.data);
+                        headImg = ret.data;
+                    }
+                });
+            }
+        });
+    }
+
+    function uploadUrl(imgUrl) {
+        var upload_avater = $api.byId('head_img');
+        upload_avater.style.backgroundImage = 'url(' + imgUrl + ')';
+    }
+
+    function uploadHead(imgUrl) {
+        $http.fileUploadRequest(urlphp + 'api/user/avatar/upload', 'post', {
+                avatar: imgUrl
+            })
+            .then(ret => {
+                if (ret.code === 0) {
+                    api.toast({
+                        msg: '上传成功',
+                        duration: 2000,
+                        location: 'top'
+                    });
+                } else {
+                    api.toast({
+                        msg: '上传失败',
+                        duration: 2000,
+                        location: 'top'
+                    });
+                }
+            })
+            .catch(err => {
+                api.toast({
+                    msg: '网络错误',
+                    duration: 2000,
+                    location: 'top'
+                });
+            })
+    }
+    // 照片裁剪
+    function photoTailoring(imgPath) {
+        var systemType = api.systemType;
+        if (systemType == 'ios') {
+            api.openFrame({
+                name: 'tailoring01',
+                url: 'tailoring01.html',
+                rect: {
+                    x: 0,
+                    y: 0,
+                    w: api.winWidth,
+                    h: api.winHeight
+                },
+                pageParam: {
+                    tailoring: imgPath
+                },
+                bounces: false,
+                bgColor: 'rgba(0,0,0,0)',
+                vScrollBarEnabled: false,
+                hScrollBarEnabled: false,
+            });
+        } else if (systemType == 'android') {
+            var imageCrop = api.require('imageCrop');
+            imageCrop.clipPhoto({
+                imgPath: imgPath,
+                height: api.winHeight,
+                width: api.winWidth
+            }, function(ret, err) {
+                if (ret) {
+                    uploadUrl(ret.imgPath);
+                    uploadHead(ret.imgPath);
+                }
+            });
+        }
+    }
+    // 手写签名
+    function handwrittenSignature() {
+        $event.openTabLayout('handwrittenSignature', 'handwrittenSignature', '手写签名', '')
+    }
+    // 个人信息
+    function personalCenterInfo() {
+        $http.requestDataLoging(UrlRouter.userInfoApi, 'post', '')
+            .then(ret => {
+                if (ret.code === 0) {
+                    var ret = ret.data;
+                    var phone = $api.dom(".api_bind_phone"),
+                        name = $api.dom(".api_name"),
+                        api_num = $api.dom(".api_num"),
+                        api_del = $api.dom(".api_del"),
+                        api_type = $api.dom(".api_type"),
+                        api_post = $api.dom(".api_post"),
+                        api_rank = $api.dom(".api_rank"),
+                        api_sex = $api.dom(".api_sex"),
+                        api_contract = $api.dom(".api_contract"),
+                        api_staff = $api.dom(".api_staff"),
+                        api_city = $api.dom(".api_city"),
+                        api_religion = $api.dom(".api_religion"),
+                        api_residence = $api.dom(".api_residence"),
+                        api_nation = $api.dom(".api_nation"),
+                        api_rirth = $api.dom(".api_rirth"),
+                        api_id = $api.dom(".api_id"),
+                        api_job_time = $api.dom(".api_job_time"),
+                        api_time1 = $api.dom(".api_time1"),
+                        api_time2 = $api.dom(".api_time2"),
+                        api_time3 = $api.dom(".api_time3"),
+                        api_face = $api.dom(".api_face"),
+                        api_time4 = $api.dom(".api_time4"),
+                        image = 'http://jiewei-icon.oss-cn-beijing.aliyuncs.com/icon/default-avatar.png',
+                        head_img = $api.byId('head_img'),
+                        signatureImg = $api.dom('.signature_container');
+                    if(ret.sign == null) {
+                      $api.css($api.dom('.handwritten_signature_container'), 'height: 0');
+                    } else {
+                      $api.css($api.dom('.handwritten_signature_container'), 'height: 180px');
+                    }
+                    ret.sign == null ? signatureImg.src = '' : signatureImg.src = ret.sign;
+                    ret.avatar == null ? head_img.style.backgroundImage = 'url(' + image + ')' : head_img.style.backgroundImage = 'url(' + ret.avatar + ')';
+                    $api.html(phone, ret.mobile);
+                    $api.html(name, ret.name);
+                    $api.html(api_num, ret.staff_num);
+                    $api.html(api_del, ret.section_fullname);
+                    $api.html(api_type, ret.job_classify);
+                    $api.html(api_post, ret.job);
+                    $api.html(api_rank, ret.duty_num);
+                    $api.html(api_sex, ret.sex);
+                    $api.html(api_contract, ret.group);
+                    $api.html(api_staff, ret.group_sub);
+                    $api.html(api_city, ret.native);
+                    $api.html(api_religion, ret.faith);
+                    $api.html(api_residence, ret.registered);
+                    $api.html(api_nation, ret.nation);
+                    $api.html(api_rirth, ret.birthday);
+                    $api.html(api_id, ret.identity_card);
+                    $api.html(api_job_time, ret.working_date);
+                    $api.html(api_time1, ret.system_date);
+                    $api.html(api_time2, ret.system_sub_date);
+                    $api.html(api_time3, ret.section_date);
+                    $api.html(api_face, ret.politics);
+                    // $api.html(api_id, ret.staff_num);
+                    $api.html(api_time4, ret.politics_date);
+                }
+            })
+            .catch(err => {
+                api.toast({
+                    msg: '网络错误',
+                    duration: 2000,
+                    location: 'bottom'
+                });
+            })
+    }
+</script>

+ 86 - 0
widget/html/personalData/personal_frame1.html

@@ -0,0 +1,86 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/aui.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/style.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style>
+        html,body{
+          background: #f2f2f2;
+        }
+        .api_layout{
+          width: 100%;
+          position: relative;
+        }
+        .aui-list .aui-list-item{
+          border-bottom: 1px  #ddd;
+        }
+    </style>
+</head>
+<body>
+    <div class="api_layout">
+        <ul class="aui-list api_lists" style="background:#fff">
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner">
+                    <div class="aui-list-item-title">初始学历</div>
+                    <span class="education"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner">
+                    <div class="aui-list-item-title">初始学历-毕业学校</div>
+                    <span class="School"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner">
+                    <div class="aui-list-item-title">初始学历-专业</div>
+                    <span class="major"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner">
+                    <div class="aui-list-item-title">初始学历-毕业时间</div>
+                    <span class="graduation_time"></span>
+                </div>
+            </li>
+        </ul>
+        <div class="api_bottom">
+          —— 到底了 ——
+        </div>
+    </div>
+</body>
+</html>
+<script type="text/javascript" src="../../script/api.js"></script>
+<!-- <script src="../../script/aui-toast.js" charset="utf-8"></script> -->
+<!-- <script src="../../script/fastclick.min.js" charset="utf-8"></script> -->
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+  apiready = function () {
+      $api.fixStatusBar($api.dom('header'));
+      // 个人信息
+    educationInfo()
+  };
+  function educationInfo() {
+    $http.requestDataLoging(UrlRouter.userInfoApi,'post','')
+    .then(ret=>{
+      if (ret.code === 0) {
+            var ret = ret.data;
+            var education =  $api.dom(".education"),
+                School =   $api.dom(".School"),
+                major =   $api.dom(".major"),
+                graduation_time =   $api.dom(".graduation_time");
+            $api.html(education, ret.start_education);
+            $api.html(School, ret.start_education_school);
+            $api.html(major, ret.start_education_major);
+            $api.html(graduation_time, ret.start_education_date);
+      }
+    })
+    .catch(err=>{})
+  }
+</script>

+ 86 - 0
widget/html/personalData/personal_frame2.html

@@ -0,0 +1,86 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/aui.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/style.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style>
+        html,body{
+          background: #f2f2f2;
+        }
+        .api_layout{
+          width: 100%;
+          position: relative;
+        }
+        .aui-list .aui-list-item{
+          border-bottom: 1px  #ddd;
+        }
+    </style>
+</head>
+<body>
+    <div class="api_layout">
+        <ul class="aui-list api_lists" style="background:#fff">
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner">
+                    <div class="aui-list-item-title">最高学历</div>
+                    <span class="education"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner">
+                    <div class="aui-list-item-title">最高学历-毕业学校</div>
+                    <span class="School"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner">
+                    <div class="aui-list-item-title">最高学历-专业</div>
+                    <span class="major"></span>
+                </div>
+            </li>
+            <li class="aui-list-item">
+                <div class="aui-list-item-inner">
+                    <div class="aui-list-item-title">最高学历-毕业时间</div>
+                    <span class="graduation_time"></span>
+                </div>
+            </li>
+        </ul>
+        <div class="api_bottom">
+          —— 到底了 ——
+        </div>
+    </div>
+</body>
+</html>
+<script type="text/javascript" src="../../script/api.js"></script>
+<!-- <script src="../../script/aui-toast.js" charset="utf-8"></script> -->
+<!-- <script src="../../script/fastclick.min.js" charset="utf-8"></script> -->
+<script src="../../script/config.js" charset="utf-8"></script>
+<script type="text/javascript">
+  apiready = function () {
+      $api.fixStatusBar($api.dom('header'));
+      // 个人信息
+    educationInfo1()
+  };
+  function educationInfo1() {
+    $http.requestDataLoging(UrlRouter.userInfoApi,'post','')
+    .then(ret=>{
+      if (ret.code === 0) {
+        var ret = ret.data;
+        var education1 =  $api.dom(".education"),
+            School1 =   $api.dom(".School"),
+            major1 =   $api.dom(".major"),
+            graduation_time1 =   $api.dom(".graduation_time");
+        $api.html(education1, ret.start_education);
+        $api.html(School1, ret.start_education_school);
+        $api.html(major1, ret.start_education_major);
+        $api.html(graduation_time1, ret.start_education_date);
+      }
+    })
+    .catch(err=>{})
+  }
+</script>

+ 113 - 0
widget/html/personalData/tailoring01.html

@@ -0,0 +1,113 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
+    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+    <title></title>
+    <link rel="stylesheet" type="text/css" href="../../css/api.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/aui.css"/>
+    <link rel="stylesheet" type="text/css" href="../../css/style.css"/>
+    <link rel="stylesheet" href="../../css/projeck.css">
+    <style media="screen">
+      .btn{
+           position: absolute;;
+           left: 0;
+           bottom: 0;
+           width: 100%;
+           color: #fff;
+           display: flex;
+           justify-content: space-around;
+           height: 50px;
+           line-height: 50px;
+           background: #000;
+      }
+      .btn span{
+        display: block;
+        padding: 0 20px;
+      }
+    </style>
+</head>
+<body style="background-color:#fff;">
+  <div class="btn">
+      <span tapmode="hover" onclick="fnClose()">取消</span>
+      <span tapmode="hover" onclick="reset()">重置</span>
+      <span tapmode="hover" onclick="saveFun()">确认</span>
+    </div>
+</body>
+</html>
+<script type="text/javascript" src="../../script/api.js"></script>
+<script type="text/javascript">
+  apiready=function () {
+    var imgPath = api.pageParam.tailoring;
+    openTailor(imgPath)
+  };
+  function openTailor(url) {
+    var FNImageClip = api.require('FNImageClip');
+    FNImageClip.open({
+        rect: {
+            x: 0,
+            y: 0,
+            w: api.frameWidth,
+            h: api.frameHeight - 50 +'px'
+        },
+        highDefinition:true,
+        srcPath: url,
+        style: {
+            mask: 'rgba(0,0,0,0.6)',
+            clip: {
+                w: 300,
+                h: 300,
+                x: 50,
+                y: 50,
+                borderColor: '#000',
+                borderWidth: 1,
+                appearance: 'rectangle'
+            }
+        },
+        fixedOn: api.frameName,
+        }, function(ret, err) {
+            if (ret) {
+
+            } else {
+
+            }
+        });
+  }
+// 取消
+   function fnClose() {
+     var FNImageClip = api.require('FNImageClip');
+    FNImageClip.close();
+    api.closeFrame({
+    });
+   }
+// 保存
+function saveFun() {
+  var FNImageClip = api.require('FNImageClip');
+  var timestamp = new Date().getTime();
+     FNImageClip.save({
+         destPath: 'fs://image/' + timestamp + '.jpg',
+         copyToAlbum: true,
+         quality: 1
+     }, function(ret, err) {
+         if (ret) {
+           api.execScript({
+                frameName: 'personal_frame0',
+                script:  'uploadUrl("'+ ret.destPath +'");'
+            });
+            api.execScript({
+                 frameName: 'personal_frame0',
+                 script:  'uploadHead("'+ ret.destPath +'");'
+             });
+            fnClose();
+         } else {
+
+         }
+     });
+ }
+ // 重置
+ function reset() {
+   var FNImageClip = api.require('FNImageClip');
+   FNImageClip.reset();
+ }
+</script>

+ 0 - 0
widget/html/producationDataItem/informationCenter.html


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