browserDetail.html 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <link rel="icon" href="../static/img/favicon2.ico" type="img/x-ico">
  7. <meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0">
  8. <title>双子星浏览器</title>
  9. <link rel="stylesheet" href="https://cdn.bootcss.com/weui/1.1.3/style/weui.min.css">
  10. <script src="../static/js/vender/vue/axios.min.js"></script>
  11. <script src="../static/js/vender/vue/vue.min.js"></script>
  12. <link rel="stylesheet" href="https://cdn.bootcss.com/jquery-weui/1.2.1/css/jquery-weui.min.css">
  13. <link rel="stylesheet" href="../static/css/browserDetail.css">
  14. <script src="../static/js/vender/jquery-3.4.1.min.js"></script>
  15. <script src="../static/js/vender/config.js"></script>
  16. <script src="../static/js/vender/toastr/toastr.min.js"></script>
  17. <script src="../static/js/vender/vue/config.js"></script>
  18. <script type="text/javascript">
  19. var deviveWidth = document.documentElement.clientWidth;
  20. document.documentElement.style.fontSize = deviveWidth / 7.5 + 'px';
  21. </script>
  22. </head>
  23. <body>
  24. <div class="container">
  25. <div class="header-wrap">
  26. <div class="search-wrap" id="search-wrap">
  27. <img class="search-icon" src="../static/img/browser/search-icon2.png" />
  28. <div class="ipt" id="ipt">双子星浏览器</div>
  29. </div>
  30. <div class="title-wrap">
  31. <img class="left-arrow" src="../static/img/browser/left-arrow.png" />
  32. <div class="title"></div>
  33. </div>
  34. <div class="tag-wrap"></div>
  35. </div>
  36. <div class="download-wrap"></div>
  37. </div>
  38. <!-- <input type="file" name="photo" id="photo" value=""> -->
  39. <script type="text/javascript">
  40. let title = GetRequest().plateName;
  41. let timer,flag = true;
  42. let labelId = '', pageNum = 1, pageSize = 10, index = 0;
  43. $('.title').eq(0).text(title);
  44. (function(){
  45. init();
  46. })();
  47. function init(){
  48. $.ajax({
  49. url: `${baseUrl}/api/public/v1/browserLabel/client/query/${GetRequest().plateId}`,
  50. type: 'get',
  51. contentType:"application/json",
  52. dataType: 'json',
  53. cache: false,
  54. success: function (res) {
  55. let list = res.data;
  56. labelId = list[0].id;
  57. rankingGet();
  58. let node = '';
  59. for(let i=0; i < list.length; i++){
  60. node += `<div class="tag-item ${i === index ? 'active' : ''}" data-id="${list[i].id}" data-index="${i}">${list[i].labelName}</div>`
  61. }
  62. $('.tag-wrap').eq(0).append(node);
  63. }
  64. })
  65. };
  66. function rankingGet(){
  67. $.ajax({
  68. url: `${baseUrl}/api/public/v1/ranking/client/get`,
  69. type: 'post',
  70. data: JSON.stringify({
  71. labelId: labelId,
  72. phoneType: 'SVIP',
  73. pageNum: pageNum,
  74. pageSize: pageSize
  75. }),
  76. contentType:"application/json",
  77. dataType: 'json',
  78. cache: false,
  79. success: function (res) {
  80. if(res.status === 0){
  81. let list = res.data.records;
  82. let node = '';
  83. for(let i=0; i < list.length; i++){
  84. node += `<div class="download-item">
  85. <div class="main-wrap">
  86. <img class="app-icon" src=${fileCenterApi}/document/newFile/download/0/3dn9b4585511476691c6?fileKey=${list[i].iconKey} />
  87. <div class="app-wrap">
  88. <div class="app-title">${list[i].appName}</div>
  89. <div class="app-description">${list[i].introduction}</div>
  90. </div>
  91. </div>
  92. <div class="btn-wrap" data-key="${list[i].fileKey}" data-id="${list[i].id}" data-index="${i}" data-md5="${list[i].md5}">
  93. <div class="progress" data-key="${list[i].fileKey}" data-id="${list[i].id}" data-index="${i}" data-md5="${list[i].md5}"></div>
  94. <text class="text" data-key="${list[i].fileKey}" data-id="${list[i].id}" data-index="${i}" data-md5="${list[i].md5}">下载</text>
  95. </div>
  96. </div>`
  97. }
  98. if(list.length === 0){
  99. node = `<div class="none-wrap">
  100. <img class="none-img" src="../static/img/browser/none.png" />
  101. <div class="none-text">没有更多内容哦~</div>
  102. </div>`
  103. }
  104. $('.download-wrap').eq(0).append(node);
  105. }else{
  106. stopManyClick(() => {
  107. toastr.error(res.msg);
  108. })
  109. }
  110. }
  111. })
  112. };
  113. $('.tag-wrap')[0].addEventListener('click',(e)=>{
  114. labelId = e.target.dataset.id;
  115. let className = e.target.className;
  116. if(className.includes('tag-item')){
  117. $('.download-wrap').eq(0).text('');
  118. $('.tag-item')[index].className = 'tag-item';
  119. index = e.target.dataset.index;
  120. $('.tag-item')[index].className = 'tag-item active';
  121. rankingGet();
  122. }
  123. },false);
  124. // 点击下载按钮
  125. $('.download-wrap')[0].addEventListener('click',(e)=>{
  126. let key = e.target.dataset.key;
  127. let md5 = e.target.dataset.md5;
  128. let index = e.target.dataset.index;
  129. let id = e.target.dataset.id;
  130. let className = e.target.className;
  131. if(className === 'btn-wrap btn-active'){
  132. return
  133. }
  134. if(['btn-wrap','progress', 'text'].includes(className)){
  135. $('.btn-wrap')[index].className = 'btn-wrap btn-active';
  136. $.ajax({
  137. url: `${baseUrl}/api/public/v1/ranking/getstatus/${id}`,
  138. type: 'get',
  139. contentType:"application/json",
  140. dataType: 'json',
  141. cache: false,
  142. success: function (res) {
  143. if(res.status === 0){
  144. const downloadUrl = `${fileCenterApi}/document/newFile/breakpointDownloadFile/3dn9b4585511476691c6?fileKey=${key}`;
  145. window.location.href = downloadUrl;
  146. let xhr = new XMLHttpRequest();
  147. xhr.open('GET', downloadUrl, true);
  148. xhr.addEventListener('progress', function (event) {
  149. // 响应头要有Content-Length
  150. if (event.lengthComputable) {
  151. let percentComplete = event.loaded / event.total;
  152. // 进度条的位置也是translate,一开始是用translateX(-100%)挪到外面去
  153. $('.progress')[0].style.transform = `translateX(${percentComplete * 100}%)`;
  154. $('.text').eq(0).text(`${(percentComplete * 100).toFixed(1)}%`);
  155. }
  156. }, false);
  157. xhr.send();
  158. // var formData = new FormData();
  159. // formData.append("file",$("#photo")[0].files[0]);
  160. // $.ajax({
  161. // url: `${baseUrl}/document/file/breakUpload`,
  162. // type: 'post',
  163. // headers: {
  164. // 'file-access-key': '3dn9b4585511476691c6',
  165. // 'md5': md5
  166. // },
  167. // data: formData,
  168. // contentType: false,
  169. // processData: false,
  170. // cache: false,
  171. // success: function (res) {
  172. // console.log(res)
  173. // if(res.status === 0){
  174. // }
  175. // }
  176. // })
  177. } else {
  178. stopManyClick(() => {
  179. toastr.error(res.msg);
  180. })
  181. }
  182. }
  183. })
  184. }
  185. },false);
  186. //防止提示一秒内重复显示
  187. function stopManyClick(fn) {
  188. if (flag) {
  189. fn();
  190. }
  191. flag = false;
  192. if(timer){clearTimeout(timer);}
  193. timer = setTimeout(() => {flag = true}, 1500);
  194. }
  195. //点击按钮搜索
  196. const searchDom = document.getElementById("search-wrap");
  197. searchDom.addEventListener('click',()=>{
  198. var wd = "https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu";
  199. window.open(wd);
  200. },false);
  201. </script>
  202. </body>
  203. </html>