App.vue 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  1. <script>
  2. import permision from "@/js_sdk/wa-permission/permission.js"
  3. import _action from './common/_action';
  4. import _get from './common/_get';
  5. import _data from './common/_data';
  6. import _page from './common/common';
  7. // #ifdef APP-PLUS
  8. import { getUpApp } from './utils/upApp.js';
  9. // #endif
  10. export default {
  11. globalData: {
  12. /** 代理客户id */
  13. agent_id: 1,
  14. /** http 服务端地址 */
  15. http_url: 'http://chat.lalanft.net',
  16. /** 静态文件存放地址 */
  17. static_url: 'http://chat.lalanft.net',
  18. /** socket 服务端地址 */
  19. socket_url: 'ws://199.180.115.136:8383',
  20. /** socket 连接状态 */
  21. socket_state: 0,
  22. /** 好友申请通知 */
  23. new_friend_tips_num: 0,
  24. /** 群认证通知 */
  25. new_group_tips_num: 0,
  26. /** 朋友圈通知 */
  27. no_reader_circle: 0,
  28. /** 朋友圈消息未读数 */
  29. no_reader_circle_chat_num: 0,
  30. /** 缓存的数据 */
  31. cache: {
  32. /** 个人头像缓存数据 */
  33. local_photo: '',
  34. },
  35. /** 用户信息 */
  36. user_info: {
  37. id: 0,
  38. nickname: '',
  39. username: '',
  40. photo: 'default_man/70.jpg',
  41. doodling: '',
  42. phone:'',
  43. circle_img: 'default_circle_img.jpg?_=3.1415926',
  44. },
  45. isOnlie:true,
  46. dragInfo:{
  47. moveX:260,
  48. moveY:180,
  49. state:-1
  50. }
  51. },
  52. onLaunch() {
  53. // #ifdef APP-PLUS
  54. // 判断是否升级
  55. getUpApp();
  56. // 获取当前运行系统
  57. let system = uni.getStorageSync('platform') || '';
  58. if (!system) {
  59. uni.setStorage({
  60. key: 'platform',
  61. data: uni.getSystemInfoSync().platform
  62. });
  63. }
  64. // #endif
  65. this.requestAn()
  66. this.$store.commit('initRECORD');
  67. //#ifdef APP-PLUS
  68. // plus.navigator.setFullscreen(true);
  69. if(plus.os.name == 'Android'){
  70. const hgService = uni.requireNativePlugin("uniapp_kill_service_plugin");
  71. // console.log(hgService)
  72. hgService.config({
  73. "title":"优哈",
  74. "content":"进程守护中",
  75. "taskTime":3000, //任务执行频率,
  76. "autoStartService":true, //是否根据监听到的广播自启动服务
  77. "autoWakeUp":true //是否自动定时点亮屏 30s
  78. });
  79. hgService.startService();
  80. }
  81. /* 5+ push 消息推送 ps:使用:H5+的方式监听,实现推送*/
  82. plus.push.addEventListener("click", function(msg) {
  83. console.log("msg.payload",JSON.stringify(msg.payload));
  84. let content_type = msg.payload.content_type;
  85. if(Object.keys(msg.payload).length){
  86. switch(parseInt(content_type)){
  87. case 6:
  88. case 7:
  89. uni.navigateTo({
  90. url: '/pages/chat/videoCall?'+_page.pageParam(msg.payload)
  91. });
  92. break;
  93. }
  94. }
  95. //这里可以写跳转业务代码
  96. }, false);
  97. // 监听在线消息事件
  98. plus.push.addEventListener("receive", function(msg) {
  99. // plus.ui.alert(2);
  100. //这里可以写跳转业务代码
  101. console.log("recevice:"+JSON.stringify(msg))
  102. }, false);
  103. //#endif
  104. // #ifdef APP-PLUS
  105. /** 锁定屏幕方向 */
  106. plus.screen.lockOrientation('portrait-primary');
  107. // let main = plus.android.runtimeMainActivity();
  108. // //为了防止快速点按返回键导致程序退出重写quit方法改为隐藏至后台
  109. // plus.runtime.quit = function(){
  110. // return false;
  111. // };
  112. //重写toast方法如果内容为 ‘再按一次退出应用’ 就隐藏应用,其他正常toast
  113. // plus.nativeUI.toast = (function(str){
  114. // if(str == '再按一次退出应用'){
  115. // return false;
  116. // }else{
  117. // return false;
  118. // // uni.showToast({
  119. // // title: '再按一次退出应用',
  120. // // icon:'none',
  121. // // })
  122. // }
  123. // });
  124. /** 检测升级 */
  125. /** <view>QQ:323392278 云站网络</view> */
  126. let _this = this;
  127. plus.runtime.getProperty(plus.runtime.appid, function (info) {
  128. _this.$httpSend({
  129. path: '/im/app/update',
  130. data: {
  131. appid: info.appid,
  132. version: info.version,
  133. },
  134. success(res) {
  135. if (res.status) {
  136. _action.checkFail();
  137. let wgtWaiting = plus.nativeUI.showWaiting("更新开始下载"),
  138. update_url = (plus.os.name == 'Android' ? res.update_url.android : res.update_url.ios),
  139. downloadTask = uni.downloadFile({
  140. url: update_url,
  141. success: (res) => {
  142. wgtWaiting.close();
  143. if (res.statusCode === 200) {
  144. plus.runtime.install(res.tempFilePath, {}, () => {
  145. plus.runtime.restart();
  146. }, (e) => {
  147. uni.showModal({
  148. content: "update error [" + e.code + "]:" + e.message,
  149. showCancel: false,
  150. });
  151. });
  152. } else {
  153. uni.showModal({
  154. content: "api error update fail!",
  155. showCancel: false,
  156. });
  157. }
  158. }
  159. });
  160. downloadTask.onProgressUpdate((res) => {
  161. wgtWaiting.setTitle('下载中...' + res.progress + '%');
  162. });
  163. }
  164. },
  165. });
  166. });
  167. // #endif
  168. },
  169. onShow() {
  170. let _this = this;
  171. if (!_data.localData('token')) {
  172. return;
  173. }
  174. /**
  175. * 每次app启动都加载最新的会话列表数据,只要是最新的会话列表数据,会话界面数据也会是最新的
  176. * 这里延时100ms,不然会全局变量没有加载完成,会报错。
  177. */
  178. if(_data.data('socket_state') <= 0){
  179. _this.$reset().$reconnect(function(){
  180. if(_data.localData('token'))_get.getChatList();
  181. });
  182. }
  183. /**
  184. * @param {Object} res
  185. * 监听网络变化
  186. * 如果有网络变化,断开socket,再重新连接
  187. * 重新获取会话列表数据
  188. * 如果是在会话界面,再重新获取这个的对话数据
  189. */
  190. uni.onNetworkStatusChange(function (res) {
  191. console.log("App onNetworkStatusChange...");
  192. /** 断开重新再连接,再获取最新数据 */
  193. if(_data.data('socket_state') <= 0 && _data.localData('token')){
  194. _this.$reset().$reconnect(function(){
  195. if (_data.localData('message_list_id') && _data.localData('token')) {
  196. _get.getChatData({
  197. send_data: {
  198. list_id: _data.localData('message_list_id'),
  199. time: 0,
  200. is_up: 1,
  201. },
  202. is_action_data: 1,
  203. });
  204. }
  205. });
  206. }
  207. });
  208. },
  209. onHide() {
  210. this.globalData.isOnlie = false;
  211. },
  212. methods:{
  213. requestAn(){
  214. switch(uni.getSystemInfoSync().platform){
  215. case 'android':
  216. permision.requestAndroidPermission("android.permission.RECORD_AUDIO")
  217. break;
  218. case 'ios':
  219. permision.judgeIosPermission("record")
  220. break;
  221. }
  222.  
  223. }
  224. }
  225. }
  226. </script>
  227. <style>
  228. /* #ifndef APP-PLUS-NVUE */
  229. /** uni.css - 通用组件、模板样式库,可以当作一套ui库应用 */
  230. @import "./static/css/font/iconfont.css";
  231. @import "./static/css/font/iconfont-im.css";
  232. @import "./static/css/uni.css";
  233. /** 设置 body 的背景色 */
  234. page {
  235. background-color: #f0eff4;
  236. }
  237. /** 导航栏自定义图标样式调整 */
  238. .uni-page-head .uni-btn-icon {
  239. min-width: auto !important;
  240. overflow: inherit !important;
  241. }
  242. uni-checkbox .uni-checkbox-input {
  243. border-radius: 50%;
  244. width: 18px !important;
  245. height: 18px !important;
  246. border: 1px solid #77be6e !important;
  247. }
  248. uni-checkbox .uni-checkbox-input.uni-checkbox-input-checked {
  249. background-color: #77be6e;
  250. border: 1px solid #77be6e !important;
  251. color: white !important;
  252. }
  253. uni-checkbox .uni-checkbox-wrapper {
  254. width: 100%;
  255. }
  256. /* #endif */
  257. </style>