概述

Vue套用Mui的外壳开发app项目,可以通过Mui的 manifest.json 文件添加权限

1.新建Mui项目

首先,新建一个空的Mui项目

window.location.href = “app服务器的地址”

2.在Vue项目中引入Mui的js

微信支付

  1. export default {
  2. paywx(money) {
  3. // 支付
  4. var pays = {};
  5. var w = null;
  6. var PAYSERVER = 'http://demo.dcloud.net.cn/payment/?payid=';
  7. var id = 'wxpay';
  8.  
  9. plus.payment.getChannels(function(channels) {
  10. for(var i in channels) {
  11.  
  12. var channel = channels[i];
  13.  
  14. if(channel.id == 'qhpay' || channel.id == 'qihoo') { // 过滤掉不支持的支付通道:暂不支持360相关支付
  15. continue;
  16. }
  17. pays[channel.id] = channel;
  18.  
  19. if(channel.description == '微信') {
  20. if(!channel.serviceReady) {
  21. var txt = null;
  22. switch(channel.id) {
  23. case 'alipay':
  24. txt = '检测到系统未安装“支付宝快捷支付服务”,无法完成支付操作,是否立即安装?';
  25. break;
  26. default:
  27. txt = '系统未安装“' + channel.description + '”服务,无法完成支付,是否立即安装?';
  28. break;
  29. }
  30. plus.nativeUI.confirm(txt, function(e) {
  31. if(e.index == 0) {
  32. channel.installService();
  33. }
  34. }, channel.description);
  35. }
  36.  
  37. }
  38.  
  39. }
  40. // info.innerText = txt;
  41. }, function(e) {
  42. // outLine('获取支付通道失败:' + e.message);
  43. });
  44.  
  45. if(w) {
  46. return;
  47. } //检查是否请求订单中
  48. if(id === 'appleiap') {
  49. // outSet('应用内支付');
  50. clicked('payment_iap.html');
  51. return;
  52. }
  53. // outSet('----- 请求支付 -----');
  54. var url = PAYSERVER;
  55. if(id == 'alipay' || id == 'wxpay') {
  56. url += id;
  57. } else {
  58. plus.nativeUI.alert('当前环境不支持此支付通道!', null, '捐赠');
  59. return;
  60. }
  61. var appid = plus.runtime.appid;
  62. if(navigator.userAgent.indexOf('StreamApp') >= 0) {
  63. appid = 'Stream';
  64. }
  65. url += '&appid=' + appid + '&total=';
  66.  
  67. w = plus.nativeUI.showWaiting();
  68. // 请求支付订单
  69. var amount = money;
  70. var xhr = new XMLHttpRequest();
  71. xhr.onreadystatechange = function() {
  72. switch(xhr.readyState) {
  73. case 4:
  74. w.close();
  75. w = null;
  76. if(xhr.status == 200) {
  77. // outLine('----- 请求订单成功 -----');
  78. // outLine(xhr.responseText);
  79. var order = xhr.responseText;
  80. plus.payment.request(pays[id], order, function(result) {
  81. // outLine('----- 支付成功 -----');
  82. // outLine(JSON.stringify(result));
  83. plus.nativeUI.alert('支付成功:感谢你的支持,我们会继续努力完善产品。', function() {
  84. back();
  85. }, '捐赠');
  86. }, function(e) {
  87. // outLine('----- 支付失败 -----');
  88. // outLine('[' + e.code + ']:' + e.message);
  89. plus.nativeUI.alert('更多错误信息请参考支付(Payment)规范文档:http://www.html5plus.org/#specification#/specification/Payment.html', null, '支付失败:' + e.code);
  90. });
  91. } else {
  92. // outLine('----- 请求订单失败 -----');
  93. // outLine(xhr.status);
  94. plus.nativeUI.alert('获取订单信息失败!', null, '捐赠');
  95. }
  96. break;
  97. default:
  98. break;
  99. }
  100. }
  101. xhr.open('GET', url + amount);
  102. // outLine('请求支付订单:' + url + amount);
  103. xhr.send();
  104.  
  105. }
  106. }

分享微信好友,朋友圈

  1. export default {
  2.  
  3. // 分享链接
  4. shareHref(adtitle,adcontent,path,imgUrl) {
  5.  
  6. //mui.toast("android");
  7. //分享操作
  8. var shares = {};
  9. mui.plusReady(function() {
  10. plus.share.getServices(function(s) {
  11. if(s && s.length > 0) {
  12. for(var i = 0; i < s.length; i++) {
  13. var t = s[i];
  14. shares[t.id] = t;
  15. }
  16. }
  17. }, function() {
  18. console.log("获取分享服务列表失败");
  19. });
  20. });
  21. //分享链接点击事件
  22. // 分享图片
  23. //分享链接点击事件
  24.  
  25. var ids = [{
  26. id: "weixin",
  27. ex: "WXSceneSession"
  28. }, {
  29. id: "weixin",
  30. ex: "WXSceneTimeline"
  31. }],
  32. bts = [{
  33. title: "发送给微信好友"
  34. }, {
  35. title: "分享到微信朋友圈"
  36. }];
  37. plus.nativeUI.actionSheet({
  38. cancel: "取消",
  39. buttons: bts
  40. }, function(e) {
  41. var i = e.index;
  42. if(i > 0) {
  43. var s_id = ids[i - 1].id;
  44. var share = shares[s_id];
  45. if(share.authenticated) {
  46. shareMessage(share, ids[i - 1].ex);
  47.  
  48. } else {
  49. share.authorize(function() {
  50. shareMessage(share, ids[i - 1].ex);
  51.  
  52. }, function(e) {
  53. console.log("认证授权失败:" + e.code + " - " + e.message);
  54.  
  55. });
  56. }
  57. }
  58. });
  59.  
  60. function shareMessage(share, ex) {
  61. var msg = {
  62. type: 'web',
  63. //content:'请选择要分享的图片',
  64. extra: {
  65. scene: ex
  66. }
  67. };
  68. var img = imgUrl;
  69. // mui.toast("img!-->" + img);
  70. // mui.toast("texx!-->"+texx);
  71. var urlx = 'http://www.baidu.com/';
  72. msg.href = path;
  73. msg.title = adtitle;
  74. msg.content = adcontent;
  75. //msg.pictures = [img];
  76. /*if(~share.id.indexOf('weibo')) {
  77. msg.content += $scope.indexC;
  78. }*/
  79. msg.thumbs = [img];
  80. share.send(msg, function() {
  81. console.log("分享到\"" + share.description + "\"成功! ");
  82. }, function(e) {
  83. console.log("分享到\"" + share.description + "\"失败: " + e.code + " - " + e.message);
  84. });
  85. }
  86.  
  87. }
  88.  
  89. }

微信登录认证

  1. export default {
  2. wxlogin() {
  3. var auths = {};
  4. var id = 'weixin';
  5. // 获取登录认证通道
  6. plus.oauth.getServices(function(services) {
  7. var content = document.getElementById('dcontent');
  8. var info = document.getElementById("info");
  9. var txt = "登录认证通道信息:";
  10. for(var i in services) {
  11. var service = services[i];
  12. console.log(service.id + ": " + service.authResult + ", " + service.userInfo);
  13. auths[service.id] = service;
  14. }
  15.  
  16. var auth = auths[id];
  17. if(auth) {
  18. var w = null;
  19. if(plus.os.name == "Android") {
  20. w = plus.nativeUI.showWaiting();
  21. }
  22. document.addEventListener("pause", function() {
  23. setTimeout(function() {
  24. w && w.close();
  25. w = null;
  26. }, 2000);
  27. }, false);
  28. auth.login(function() {
  29. w && w.close();
  30. w = null;
  31. console.log(JSON.stringify(auth.authResult))
  32. userinfo(auth);
  33. }, function(e) {
  34. w && w.close();
  35. w = null;
  36. plus.nativeUI.alert("详情错误信息请参考授权登录(OAuth)规范文档:http://www.html5plus.org/#specification#/specification/OAuth.html", null, "登录失败[" + e.code + "]:" + e.message);
  37. });
  38. } else {
  39. plus.nativeUI.alert("无效的登录认证通道!", null, "登录");
  40. }
  41.  
  42. }, function(e) {
  43.  
  44. });
  45.  
  46. // 获取用户信息
  47. function userinfo(a) {
  48. a.getUserInfo(function() {
  49. var nickname = a.userInfo.nickname || a.userInfo.name || a.userInfo.miliaoNick;
  50. plus.nativeUI.alert("欢迎“" + nickname + "”登录!");
  51. }, function(e) {
  52. plus.nativeUI.alert("获取用户信息失败!", null, "登录");
  53. });
  54. }
  55.  
  56. }
  57. }

Vue + Mui的更多相关文章

  1. 基于Html5 Plus + Vue + Mui 移动App开发(三)-文件操作(读取、保存、更新数据)

      随着手机的发展,现在越来越多的人选择在手机上看书.无论是专业书籍.文学.英语还是网络小说,在手机上看新闻成了人们处理零碎时间的办法.在智能手机里安装一个资讯APP,可以随时.随地查看自己想看的资讯 ...

  2. 基于Html5 Plus + Vue + Mui 移动App 开发(二)

    基于Html5 Plus + Vue + Mui 移动App 开发(二) 界面效果: 本页面采用Html5 Plus + Vue + Mui 开发移动界面,本页面实现: 1.下拉刷新.上拉获取更多功能 ...

  3. vue+mui轮播图

    mui的轮播图,如果图片是请求来的,直接在html中循环是不会动的. 需要请求完图片之后,在setTimeout方法里,使用slider()方法,这样才会动 而且mui的轮播图,有点坑的,需要重复最后 ...

  4. vue+mui+html5+ plus开发的混合应用底部导航的显示与隐藏

    1. 模板相关内容(template) <template> <div> <transition :name="transitionName"> ...

  5. vue路由对不同界面进行传参及跳转的总结

    最近在做一个公众号的商城项目,主要用的VUE+MUI,其实今天这个点对于有过项目经验的前端工作者来说是最基础的,但也是必须要掌握的,今天小编主要是记录下传参和跳转的一些总结(仅供参考). 首先我们先上 ...

  6. 基于vue项目的组件中导入mui框架初始化滑动等效果时需移除严格模式的问题

    基于vue项目的组件中导入mui框架初始化滑动等效果时,控制台报错:Uncaught TypeError: 'caller', 'callee', and 'arguments' properties ...

  7. Vue中使用mui方法

    第一步 下载 下载网址:http://dev.dcloud.net.cn/mui/ui/ 点击GitHub进行下载 第二步 Vue中引入Mui 将下载好的文件解压 把文件中dist中的三个文件复制到自 ...

  8. mui+vue+photoclip做APP头像裁剪上传

    做APP由于项目需要,需要做用户头像上传的功能,头像上传包括拍照和相册选择图片进行上传,这里使用的技术是mui封装的plus,在进行图片裁剪的时候,使用的是photoclip来进行裁剪,由于个人在使用 ...

  9. 偏前端 - div+mui+vue.js 制作问卷调查单页 ——题目答案由后台随机给出10道

    封装的ajax获取数据.代码可能有些是多余的,没做处理!!点击提交后有弹框,在这里我没有贴出来.第一次写博客,这些也是别人教我的,经理解后,贴出来于大家分享 ——html—— <script t ...

随机推荐

  1. vue 引入 fontawesome 报错 Could not find one or more icon(s) 解决

    在 vue 项目中引用 fontawesome , 按照官方说明如下步骤操作 1. 终端中执行 $ npm i --save @fortawesome/fontawesome-svg-core $ n ...

  2. 二次编码 深浅拷贝 is和==

    1.二次编码 ascii 不支持中文 gbk 支持中文 2个字节 包含ascii Unicode 万国码 python3 内存Unicode utf-8 可变的长度 英文 1字节 欧洲2个字节 亚洲3 ...

  3. JAVA的List接口的remove重载方法调用原理

    前言 说真的,平常看源码都是自己看完自己懂,很少有写出来的冲动. 但是在写算法的时候,经常用到java中各种集合,其中也比较常用到remove方法. remove有重载函数,分别传入参数是索引inde ...

  4. 五、springboot 简单优雅是实现邮件服务

    前言 spring boot 的项目放下小半个月没有更新了,终于闲下来可以开心的接着写啦. 之前我们配置好mybatis 多数据源的,接下来我们需要做一个邮件服务.比如你注册的时候,需要输入验证码来校 ...

  5. ORM查询总结版

    目录 概要 ORM常用字段 ORM基础 自定义一个插入类型,即固定长度 创建类终极版 多对多关系表创建 常用几个代码 参数 ORM与数据库代码对应的关系 外键使用分表很麻烦,要先删除主表后,再删除 不 ...

  6. C-02 推荐系统

    目录 推荐系统 一.导入模块 二.收集数据 三.数据预处理 3.1 无评分电影处理 四.协同过滤算法-基于用户的推荐 4.1 余弦相似度 4.2 数据标准化处理 五.预测 六.测试 更新.更全的< ...

  7. SQL SERVER数据库内,需要序列号进行排序时,排序方法

    举例如下: SELECT ROW_NUMBER()OVER(ORDER BY (SELECT 0)) AS ROWNUM,* FROM YXHIS2018..TBMZGHMX201801 --不排序S ...

  8. 使用malloc函数或new运算符为链表结点分配内存空间

    目录 使用malloc函数或new运算符为链表结点分配内存空间 使用malloc函数或new运算符为链表结点分配内存空间 当我们定义链表结点类型后,如何在每次需要使用新结点时临时分配相应大小的内存空间 ...

  9. windows 7 专业版 64位 无法安装.Net 4.7版本解决方案

    什么暂停windows update,改文件夹,再恢复windows update等等方法都试了,不行之后就觉得这才是终极解决方案. 不管你是win 7什么版本,你只需要下载安装对应系统的Window ...

  10. Neo4j:图数据库GraphDB(一)入门和基本查询语句

    图数据库的代表:Neo4j 官网:  http://neo4j.com/ 引言:为什么使用图数据库 在很多新型项目中,应用图数据库已经是势在必行的趋势了,因为图数据库可以很好的表示各种节点与关系的概念 ...