index.vue 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. <template>
  2. <view>
  3. <web-view src="http://61.177.40.178:8001" @message="handleMessage" id="myWebview"></web-view>
  4. <!-- <web-view src="http://192.168.0.139:3200" @message="handleMessage" id="myWebview"></web-view> -->
  5. <!-- <web-view src="http://120.192.74.74:7501" @message="handleMessage" id="myWebview"></web-view> -->
  6. <!-- <button @click="downloadFile">点击下载文件</button> -->
  7. </view>
  8. </template>
  9. <!-- -->
  10. <!-- <script src="../../js/uni-webview"></script> -->
  11. <script>
  12. export default {
  13. data() {
  14. return {
  15. }
  16. },
  17. onReady() {
  18. },
  19. onLaunch() {
  20. },
  21. onLoad: function() {
  22. },
  23. methods: {
  24. handleMessage(evt) {
  25. console.log('原始信息:' + evt)
  26. console.log('接收到的消息:' + JSON.stringify(evt));
  27. if (evt) {
  28. // let data={};
  29. let data = JSON.parse(evt.detail.data);
  30. console.log('json解析:' + JSON.stringify(data));
  31. if (data && data.content && data.title && data.content != '' && data.title != '') {
  32. uni.createPushMessage({
  33. content: data.content, // 推送内容
  34. title: data.title, // 推送标题
  35. sound: "system",
  36. success: function(res) {
  37. console.log('推送成功', res);
  38. },
  39. fail: function(err) {
  40. console.log('推送失败', err);
  41. }
  42. });
  43. } else if (data && data.type && data.type == 'file' && data.url && data.url != '' && data.fileName &&
  44. data.fileName != '' && data.token && data.token != '') {
  45. //判断是否为post请求
  46. let isPost = false;
  47. try {
  48. let urlType = data.urlType;
  49. let postRequest = data.postRequest;
  50. if (urlType == 'POST') {
  51. isPost = true;
  52. }
  53. } catch (e) {
  54. isPost = false;
  55. }
  56. let url = data.url;
  57. let fileName = data.fileName;
  58. let token = data.token;
  59. if (!isPost) {
  60. console.log("移动端文件下载通用方式")
  61. console.log('url:' + url);
  62. this.downloadFile(url, fileName, token);
  63. } else {
  64. let postRequest = data.postRequest;
  65. this.downloadPostFile(url, fileName, token, postRequest)
  66. }
  67. } else if (data && data.type && data.type == 'scanCode') {
  68. this.currentWebView = plus.webview.currentWebview();
  69. console.log('66666', this.currentWebView);
  70. this.scancode();
  71. } else {
  72. return;
  73. }
  74. }
  75. },
  76. // downloadFile(url) {
  77. // uni.downloadFile({
  78. // url: url,
  79. // success: function(res) {
  80. // if (res.statusCode === 200) {
  81. // console.log('下载成功:' + JSON.stringify(res));
  82. // uni.saveFile({
  83. // tempFilePath: res.tempFilePath,
  84. // success: function(res) {
  85. // var savedFilePath = res.savedFilePath;
  86. // console.log("download:" + savedFilePath)
  87. // uni.openDocument({
  88. // filePath: savedFilePath
  89. // });
  90. // }
  91. // });
  92. // }
  93. // }
  94. // });
  95. // },
  96. scancode() {
  97. uni.scanCode({
  98. scanType: ['qrCode'],
  99. success: function(res) {
  100. console.log('条码类型:' + res.scanType);
  101. console.log('条码内容:' + res.result);
  102. // let result=JSON.stringify(res.result)
  103. plus.webview.getDisplayWebview()[0].evalJS(`window.postJS(${res.result})`)
  104. },
  105. });
  106. // uni.postMessage({
  107. // data:{
  108. // title:'555555'
  109. // }
  110. // })
  111. },
  112. downloadFile(_url, _name, _token) {
  113. uni.downloadFile({
  114. url: _url, //文件链接
  115. header: {
  116. "token": _token
  117. },
  118. success: (res) => {
  119. if (res.statusCode === 200) {
  120. console.log("res:", res)
  121. uni.saveFile({
  122. tempFilePath: res.tempFilePath,
  123. success: function(res) {
  124. var savedFilePath = res.savedFilePath;
  125. let lastSlashIndex = savedFilePath.lastIndexOf("/");
  126. let name_index = _name.lastIndexOf('.');
  127. let fileName = _name.slice(0, name_index) + Date.now() + _name
  128. .slice(name_index, _name.length)
  129. var newFilePath = savedFilePath.slice(0, lastSlashIndex + 1) +
  130. fileName;
  131. console.log("download:" + savedFilePath)
  132. console.log('修改之后的文件路径:' + newFilePath)
  133. //修改名称
  134. plus.io.resolveLocalFileSystemURL(savedFilePath, entry => {
  135. entry.getParent(_oldFile => {
  136. entry.moveTo(_oldFile, '/' + fileName,
  137. newFilePath => {
  138. console.log('文件名称替换完成');
  139. // console.log('000',newFilePath.fullPath);
  140. })
  141. })
  142. })
  143. setTimeout(() => {
  144. uni.openDocument({
  145. filePath: newFilePath,
  146. success() {
  147. console.log('打开成功');
  148. },
  149. fail() {
  150. console.log('打开失败');
  151. }
  152. });
  153. }, 1000)
  154. }
  155. });
  156. }
  157. },
  158. fail: (err) => {
  159. uni.showToast({
  160. icon: 'none',
  161. mask: true,
  162. title: '失败请重新下载',
  163. });
  164. },
  165. })
  166. },
  167. downloadPostFile(_url, _name, _token, _data) {
  168. let name_index = _name.lastIndexOf('.');
  169. let fileName = "_doc/uniapp_save/" + _name.slice(0, name_index) + Date.now() + _name
  170. .slice(name_index, _name.length);
  171. console.log('文件路径:' + fileName)
  172. var dtask = plus.downloader.createDownload(_url, {
  173. filename: fileName, //利用保存路径,实现下载文件的重命名
  174. method: 'POST',
  175. data: _data
  176. }, function(d, status) {
  177. console.log("d====>", d)
  178. console.log("status====>", status)
  179. //d为下载的文件对象
  180. if (status == 200) {
  181. // var fileSaveUrl = plus.io.convertLocalFileSystemURL(d.filename);
  182. plus.runtime.openFile(d.filename); //选择软件打开文件
  183. } else {
  184. //下载失败
  185. plus.downloader.clear(); //清除下载任务
  186. reject({
  187. data: d,
  188. status
  189. })
  190. }
  191. })
  192. dtask.setRequestHeader("token", _token)
  193. dtask.setRequestHeader("Content-Type", "application/json")
  194. dtask.start(); //执行下载
  195. },
  196. }
  197. }
  198. </script>
  199. <style>
  200. </style>