HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

个推写的js

push问题解决方法 Push

这是我写的推送js源文件

var Push = function () {  
}  
//推送格式  
//{"e":"admin_edit_driver","eid":"1111","params":{"barcode":"IIG370554","status":"100"}}  

/**  
 *  
 * 推送的监听  
 */  
Push.prototype.pushListener = function () {  
  var _this = this;  
  plus.push.addEventListener("click", function (msg) {  
    switch (msg.payload) {  
      case "LocalMSG":  
        ApiConfig.staticToast("点击本地创建消息启动:");  
        ApiConfig.staticIsDebug(null, "点击本地创建消息启动:");  
        break;  
      default:  
        ApiConfig.staticToast("点击离线推送消息启动:");  
        ApiConfig.staticIsDebug(null, "点击离线推送消息启动:");  
        break;  
    }  
    if (msg.payload) {  
      ApiConfig.staticIsDebug("click", msg, 1);  
      _this.handle(msg);  
    }  
  }, false);  
  plus.push.addEventListener("receive", function (msg) {  
    if (msg.aps) { // Apple APNS message  
      ApiConfig.staticToast("接收到在线APNS消息:");  
      ApiConfig.staticIsDebug(null, "接收到在线APNS消息:");  
    } else {  
      ApiConfig.staticToast("接收到在线透传消息:");  
      ApiConfig.staticIsDebug(null, "接收到在线透传消息:");  
    }  
    if (plus.os.name == 'iOS') {  
      if (msg.payload) {  
        _this.notificationMessage(msg);  
      }  
    } else {  
      _this.notificationMessage(msg);  
    }  
  }, false);  
}  

/**  
 * 解析透传并分别处理  
 * @param {Object} msg  
 */  
Push.prototype.notificationMessage = function (msg) {  
  ApiConfig.staticToast(msg, 1);  
  ApiConfig.staticIsDebug("notificationMessage", msg, 1);  
  var content = '';  
  var _this = this;  
  var jsonData = '';  
  switch (plus.os.name) {  
    case "Android":  
      jsonData = eval("(" + msg.payload + ")");  
      break;  
    case "iOS":  
      jsonData = msg.payload;  
      break;  
  }  
  switch (jsonData.e) {  
    case 'admin_version_update':  
      content = '版本更新';  
      break;  
    default:  
      break;  
  }  
  if (content) {  
    _this.createLocalPushMsg(msg, content);  
  }  
}  

/**  
 * 根据透传信息创建一条本地推送消息内容  
 * @param {Object} msg  
 * @param {Object} content  
 * main页面    2中情况  
 *            1.订单状态改变 刷新页面  
 *            2.订单完成创建本地推送消息点击跳到订单详情界面  
 * orderDetail页面  
 *            1.相同的order_id加载成订单改变的界面  
 *            2.不相同的order_id通知一下  
 *            3.支付成功相同的order_id跳到成功页面  
 *            4.支付成功不相同order_id通知一下  
 * updateProduct页面  
 *            1.所有的都只通知一下  
 *  
 */  
Push.prototype.createLocalPushMsg = function (msg, content) {  
  ApiConfig.staticIsDebug("createLocalPushMsg", msg, 1);  
  var _this = this;  
  var options = {  
    cover: false  
  };  
  var jsonData = '';  
  switch (plus.os.name) {  
    case "Android":  
      jsonData = eval("(" + msg.payload + ")");  
      break;  
    case "iOS":  
      jsonData = msg.payload;  
      break;  
  }  
  var str = content ? content : "";  
  var sell_main = plus.webview.getWebviewById('sell_main');  
  var searchOrderList = plus.webview.getWebviewById('searchOrderList');  
  var searchTaskList = plus.webview.getWebviewById('searchTaskList');  
  var topWeb = plus.webview.getTopWebview();  
  var userInfo = DbUtils.getStorage('userInfo', 1);  
  var isPushOrder;  
  //通知具体页面的sell_main 什么操作pushRefresh 参数{order: isPushOrder}  
  mui.fire(sell_main, 'pushRefresh', {order: isPushOrder});  
  _this.createMessage(str, jsonData, options);  
}  

/**  
 * mui创建本地方法的API  
 * @param str  
 * @param jsonData  
 * @param options  
 */  
Push.prototype.createMessage = function (str, jsonData, options) {  
  switch (plus.os.name) {  
    case "Android":  
      break;  
    case "iOS":  
      jsonData = jsonData.eid;  
      break;  
  }  
  plus.push.createMessage(str, jsonData, options);  
}  

/**  
 * 支付成功后掉头跳转  
 * @param orderDetail  
 */  
Push.prototype.openPaySuccess = function (orderDetail) {  
  var openUrl = 'view/driver/paySuccess.html';  
  var openId = 'paySuccess';  
  var orderParams = {  
    order: orderDetail  
  };  
  utilsJs.openWebView(openUrl, openId, orderParams);  
}  

/**  
 * 点击通知的处理方法  
 * @param {Object} msg  
 */  
Push.prototype.handle = function (msg) {  
  var _this = this;  
  var isPushOrder;  
  var sell_main = plus.webview.getWebviewById('sell_main');  
  ApiConfig.staticIsDebug("msg", msg, 1);  
  var order_id = '';  
  var jsonData = '';  
  switch (plus.os.name) {  
    case "Android":  
      jsonData = eval("(" + msg.payload + ")");  
      order_id = jsonData.eid;  
      break;  
    case "iOS":  
      if (msg.aps) {  
        try {  
          jsonData = msg.payload;  
          order_id = jsonData.eid;  
        } catch (e) {  
        }  
      } else {  
        jsonData = msg.payload;  
        order_id = jsonData;  
      }  
      break;  
  }  
  var userInfo = DbUtils.getStorage('userInfo', 1);  
  var openUrl = '';  
  var openId = '';  
  var order = null;  
  var task = null;  
  switch (jsonData.e) {  
    case 'admin_order_status':  
      isPushOrder = 1;  
      break;  
    case 'admin_order_pay':  
      isPushOrder = 1;  
      break;  
    case 'admin_driver_new_task':  
      isPushOrder = 0;  
      break;  
    case 'admin_prospect_verification':  
      isPushOrder = 0;  
      break;  
    default:  
      break;  
  }  
  //刷新首页内容  
  mui.fire(sell_main, 'Refresh', {order: isPushOrder});  
  //跳转到当前推送消息订单  
  _this.openUrlParams(openUrl, openId, {  
    order: order  
  });  
}  

/**  
 * 跳转的页面方法  
 * @param {Object} openUrl  
 * @param {Object} openId  
 * @param {Object} params  
 */  
Push.prototype.openUrlParams = function (openUrl, openId, params) {  
  utilsJs.openWebView(openUrl, openId, params);  
}  

/**  
 *清除ios小红点  
 */  
Push.prototype.cancelPushClear = function () {  
  plus.push.clear();  
}

此代码仅使用html5 不使用混编,几个月前写的可能有一些遗漏地方,如果有误请指正。qq:934834037

继续阅读 »

这是我写的推送js源文件

var Push = function () {  
}  
//推送格式  
//{"e":"admin_edit_driver","eid":"1111","params":{"barcode":"IIG370554","status":"100"}}  

/**  
 *  
 * 推送的监听  
 */  
Push.prototype.pushListener = function () {  
  var _this = this;  
  plus.push.addEventListener("click", function (msg) {  
    switch (msg.payload) {  
      case "LocalMSG":  
        ApiConfig.staticToast("点击本地创建消息启动:");  
        ApiConfig.staticIsDebug(null, "点击本地创建消息启动:");  
        break;  
      default:  
        ApiConfig.staticToast("点击离线推送消息启动:");  
        ApiConfig.staticIsDebug(null, "点击离线推送消息启动:");  
        break;  
    }  
    if (msg.payload) {  
      ApiConfig.staticIsDebug("click", msg, 1);  
      _this.handle(msg);  
    }  
  }, false);  
  plus.push.addEventListener("receive", function (msg) {  
    if (msg.aps) { // Apple APNS message  
      ApiConfig.staticToast("接收到在线APNS消息:");  
      ApiConfig.staticIsDebug(null, "接收到在线APNS消息:");  
    } else {  
      ApiConfig.staticToast("接收到在线透传消息:");  
      ApiConfig.staticIsDebug(null, "接收到在线透传消息:");  
    }  
    if (plus.os.name == 'iOS') {  
      if (msg.payload) {  
        _this.notificationMessage(msg);  
      }  
    } else {  
      _this.notificationMessage(msg);  
    }  
  }, false);  
}  

/**  
 * 解析透传并分别处理  
 * @param {Object} msg  
 */  
Push.prototype.notificationMessage = function (msg) {  
  ApiConfig.staticToast(msg, 1);  
  ApiConfig.staticIsDebug("notificationMessage", msg, 1);  
  var content = '';  
  var _this = this;  
  var jsonData = '';  
  switch (plus.os.name) {  
    case "Android":  
      jsonData = eval("(" + msg.payload + ")");  
      break;  
    case "iOS":  
      jsonData = msg.payload;  
      break;  
  }  
  switch (jsonData.e) {  
    case 'admin_version_update':  
      content = '版本更新';  
      break;  
    default:  
      break;  
  }  
  if (content) {  
    _this.createLocalPushMsg(msg, content);  
  }  
}  

/**  
 * 根据透传信息创建一条本地推送消息内容  
 * @param {Object} msg  
 * @param {Object} content  
 * main页面    2中情况  
 *            1.订单状态改变 刷新页面  
 *            2.订单完成创建本地推送消息点击跳到订单详情界面  
 * orderDetail页面  
 *            1.相同的order_id加载成订单改变的界面  
 *            2.不相同的order_id通知一下  
 *            3.支付成功相同的order_id跳到成功页面  
 *            4.支付成功不相同order_id通知一下  
 * updateProduct页面  
 *            1.所有的都只通知一下  
 *  
 */  
Push.prototype.createLocalPushMsg = function (msg, content) {  
  ApiConfig.staticIsDebug("createLocalPushMsg", msg, 1);  
  var _this = this;  
  var options = {  
    cover: false  
  };  
  var jsonData = '';  
  switch (plus.os.name) {  
    case "Android":  
      jsonData = eval("(" + msg.payload + ")");  
      break;  
    case "iOS":  
      jsonData = msg.payload;  
      break;  
  }  
  var str = content ? content : "";  
  var sell_main = plus.webview.getWebviewById('sell_main');  
  var searchOrderList = plus.webview.getWebviewById('searchOrderList');  
  var searchTaskList = plus.webview.getWebviewById('searchTaskList');  
  var topWeb = plus.webview.getTopWebview();  
  var userInfo = DbUtils.getStorage('userInfo', 1);  
  var isPushOrder;  
  //通知具体页面的sell_main 什么操作pushRefresh 参数{order: isPushOrder}  
  mui.fire(sell_main, 'pushRefresh', {order: isPushOrder});  
  _this.createMessage(str, jsonData, options);  
}  

/**  
 * mui创建本地方法的API  
 * @param str  
 * @param jsonData  
 * @param options  
 */  
Push.prototype.createMessage = function (str, jsonData, options) {  
  switch (plus.os.name) {  
    case "Android":  
      break;  
    case "iOS":  
      jsonData = jsonData.eid;  
      break;  
  }  
  plus.push.createMessage(str, jsonData, options);  
}  

/**  
 * 支付成功后掉头跳转  
 * @param orderDetail  
 */  
Push.prototype.openPaySuccess = function (orderDetail) {  
  var openUrl = 'view/driver/paySuccess.html';  
  var openId = 'paySuccess';  
  var orderParams = {  
    order: orderDetail  
  };  
  utilsJs.openWebView(openUrl, openId, orderParams);  
}  

/**  
 * 点击通知的处理方法  
 * @param {Object} msg  
 */  
Push.prototype.handle = function (msg) {  
  var _this = this;  
  var isPushOrder;  
  var sell_main = plus.webview.getWebviewById('sell_main');  
  ApiConfig.staticIsDebug("msg", msg, 1);  
  var order_id = '';  
  var jsonData = '';  
  switch (plus.os.name) {  
    case "Android":  
      jsonData = eval("(" + msg.payload + ")");  
      order_id = jsonData.eid;  
      break;  
    case "iOS":  
      if (msg.aps) {  
        try {  
          jsonData = msg.payload;  
          order_id = jsonData.eid;  
        } catch (e) {  
        }  
      } else {  
        jsonData = msg.payload;  
        order_id = jsonData;  
      }  
      break;  
  }  
  var userInfo = DbUtils.getStorage('userInfo', 1);  
  var openUrl = '';  
  var openId = '';  
  var order = null;  
  var task = null;  
  switch (jsonData.e) {  
    case 'admin_order_status':  
      isPushOrder = 1;  
      break;  
    case 'admin_order_pay':  
      isPushOrder = 1;  
      break;  
    case 'admin_driver_new_task':  
      isPushOrder = 0;  
      break;  
    case 'admin_prospect_verification':  
      isPushOrder = 0;  
      break;  
    default:  
      break;  
  }  
  //刷新首页内容  
  mui.fire(sell_main, 'Refresh', {order: isPushOrder});  
  //跳转到当前推送消息订单  
  _this.openUrlParams(openUrl, openId, {  
    order: order  
  });  
}  

/**  
 * 跳转的页面方法  
 * @param {Object} openUrl  
 * @param {Object} openId  
 * @param {Object} params  
 */  
Push.prototype.openUrlParams = function (openUrl, openId, params) {  
  utilsJs.openWebView(openUrl, openId, params);  
}  

/**  
 *清除ios小红点  
 */  
Push.prototype.cancelPushClear = function () {  
  plus.push.clear();  
}

此代码仅使用html5 不使用混编,几个月前写的可能有一些遗漏地方,如果有误请指正。qq:934834037

收起阅读 »

Bootstrap 模态框(Modal)插件

模态框(Modal)是覆盖在父窗体上的子窗体。通常,目的是显示来自一个单独的源的内容,可以在不离开父窗体的情况下有一些互动。子窗体可提供信息、交互等。
如果您想要单独引用该插件的功能,那么您需要引用 modal.js。或者,正如 Bootstrap 插件概览 一章中所提到,您可以引用 bootstrap.js 或压缩版的 bootstrap.min.js。
用法
您可以切换模态框(Modal)插件的隐藏内容:
通过 data 属性:在控制器元素(比如按钮或者链接)上设置属性 data-toggle="modal",同时设置 data-target="#identifier" 或 href="#identifier" 来指定要切换的特定的模态框(带有 id="identifier")。
通过 JavaScript:使用这种技术,您可以通过简单的一行 JavaScript 来调用带有 id="identifier" 的模态框:
$('#identifier').modal(options)

<!DOCTYPE html>  
<html>  
<head>  
    <meta charset="utf-8">   
    <title>Bootstrap 实例 - 模态框(Modal)插件</title>  
    <link rel="stylesheet" href="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/css/bootstrap.min.css">  
    <script src="http://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js"></script>  
    <script src="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/js/bootstrap.min.js"></script>  
</head>  
<body>  

<h2>创建模态框(Modal)</h2>  
<!-- 按钮触发模态框 -->  
<button class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">  
    开始演示模态框  
</button>  
<!-- 模态框(Modal) -->  
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">  
    <div class="modal-dialog">  
        <div class="modal-content">  
            <div class="modal-header">  
                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">  
                    &times;  
                </button>  
                <h4 class="modal-title" id="myModalLabel">  
                    模态框(Modal)标题  
                </h4>  
            </div>  
            <div class="modal-body">  
                在这里添加一些文本  
            </div>  
            <div class="modal-footer">  
                <button type="button" class="btn btn-default" data-dismiss="modal">关闭  
                </button>  
                <button type="button" class="btn btn-primary">  
                    提交更改  
                </button>  
            </div>  
        </div><!-- /.modal-content -->  
    </div><!-- /.modal -->  
</div>  
</body>  
</html>

代码讲解:
使用模态窗口,您需要有某种触发器。您可以使用按钮或链接。这里我们使用的是按钮。
如果您仔细查看上面的代码,您会发现在 <button> 标签中,data-target="#myModal" 是您想要在页面上加载的模态框的目标。您可以在页面上创建多个模态框,然后为每个模态框创建不同的触发器。现在,很明显,您不能在同一时间加载多个模块,但您可以在页面上创建多个在不同时间进行加载。
在模态框中需要注意两点:
第一是 .modal,用来把 <div> 的内容识别为模态框。
第二是 .fade class。当模态框被切换时,它会引起内容淡入淡出。
aria-labelledby="myModalLabel",该属性引用模态框的标题。
属性 aria-hidden="true" 用于保持模态窗口不可见,直到触发器被触发为止(比如点击在相关的按钮上)。
<div class="modal-header">,modal-header 是为模态窗口的头部定义样式的类。
class="close",close 是一个 CSS class,用于为模态窗口的关闭按钮设置样式。
data-dismiss="modal",是一个自定义的 HTML5 data 属性。在这里它被用于关闭模态窗口。
class="modal-body",是 Bootstrap CSS 的一个 CSS class,用于为模态窗口的主体设置样式。
class="modal-footer",是 Bootstrap CSS 的一个 CSS class,用于为模态窗口的底部设置样式。
data-toggle="modal",HTML5 自定义的 data 属性 data-toggle 用于打开模态窗口。
方法
下面是一些可与 modal() 一起使用的有用的方法。
方法 描述 实例
Options: .modal(options) 把内容作为模态框激活。接受一个可选的选项对象。
$('#identifier').modal({
keyboard: false
})
Toggle: .modal('toggle') 手动切换模态框。
$('#identifier').modal('toggle')
Show: .modal('show') 手动打开模态框。
$('#identifier').modal('show')
Hide: .modal('hide') 手动隐藏模态框。
$('#identifier').modal('hide')

继续阅读 »

模态框(Modal)是覆盖在父窗体上的子窗体。通常,目的是显示来自一个单独的源的内容,可以在不离开父窗体的情况下有一些互动。子窗体可提供信息、交互等。
如果您想要单独引用该插件的功能,那么您需要引用 modal.js。或者,正如 Bootstrap 插件概览 一章中所提到,您可以引用 bootstrap.js 或压缩版的 bootstrap.min.js。
用法
您可以切换模态框(Modal)插件的隐藏内容:
通过 data 属性:在控制器元素(比如按钮或者链接)上设置属性 data-toggle="modal",同时设置 data-target="#identifier" 或 href="#identifier" 来指定要切换的特定的模态框(带有 id="identifier")。
通过 JavaScript:使用这种技术,您可以通过简单的一行 JavaScript 来调用带有 id="identifier" 的模态框:
$('#identifier').modal(options)

<!DOCTYPE html>  
<html>  
<head>  
    <meta charset="utf-8">   
    <title>Bootstrap 实例 - 模态框(Modal)插件</title>  
    <link rel="stylesheet" href="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/css/bootstrap.min.css">  
    <script src="http://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js"></script>  
    <script src="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/js/bootstrap.min.js"></script>  
</head>  
<body>  

<h2>创建模态框(Modal)</h2>  
<!-- 按钮触发模态框 -->  
<button class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">  
    开始演示模态框  
</button>  
<!-- 模态框(Modal) -->  
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">  
    <div class="modal-dialog">  
        <div class="modal-content">  
            <div class="modal-header">  
                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">  
                    &times;  
                </button>  
                <h4 class="modal-title" id="myModalLabel">  
                    模态框(Modal)标题  
                </h4>  
            </div>  
            <div class="modal-body">  
                在这里添加一些文本  
            </div>  
            <div class="modal-footer">  
                <button type="button" class="btn btn-default" data-dismiss="modal">关闭  
                </button>  
                <button type="button" class="btn btn-primary">  
                    提交更改  
                </button>  
            </div>  
        </div><!-- /.modal-content -->  
    </div><!-- /.modal -->  
</div>  
</body>  
</html>

代码讲解:
使用模态窗口,您需要有某种触发器。您可以使用按钮或链接。这里我们使用的是按钮。
如果您仔细查看上面的代码,您会发现在 <button> 标签中,data-target="#myModal" 是您想要在页面上加载的模态框的目标。您可以在页面上创建多个模态框,然后为每个模态框创建不同的触发器。现在,很明显,您不能在同一时间加载多个模块,但您可以在页面上创建多个在不同时间进行加载。
在模态框中需要注意两点:
第一是 .modal,用来把 <div> 的内容识别为模态框。
第二是 .fade class。当模态框被切换时,它会引起内容淡入淡出。
aria-labelledby="myModalLabel",该属性引用模态框的标题。
属性 aria-hidden="true" 用于保持模态窗口不可见,直到触发器被触发为止(比如点击在相关的按钮上)。
<div class="modal-header">,modal-header 是为模态窗口的头部定义样式的类。
class="close",close 是一个 CSS class,用于为模态窗口的关闭按钮设置样式。
data-dismiss="modal",是一个自定义的 HTML5 data 属性。在这里它被用于关闭模态窗口。
class="modal-body",是 Bootstrap CSS 的一个 CSS class,用于为模态窗口的主体设置样式。
class="modal-footer",是 Bootstrap CSS 的一个 CSS class,用于为模态窗口的底部设置样式。
data-toggle="modal",HTML5 自定义的 data 属性 data-toggle 用于打开模态窗口。
方法
下面是一些可与 modal() 一起使用的有用的方法。
方法 描述 实例
Options: .modal(options) 把内容作为模态框激活。接受一个可选的选项对象。
$('#identifier').modal({
keyboard: false
})
Toggle: .modal('toggle') 手动切换模态框。
$('#identifier').modal('toggle')
Show: .modal('show') 手动打开模态框。
$('#identifier').modal('show')
Hide: .modal('hide') 手动隐藏模态框。
$('#identifier').modal('hide')

收起阅读 »

关于我最新发布的模板的获取说明,不看必然后悔

我发布的模板是基于
素材火 制作的
如果你是安卓手机,请先下载
百度浏览器 打开我发的模板帖子
下载地址
然后菜单 保存网页即可。。。
如果你是windows电脑,请先下载
360极速浏览器 打开我发的模板帖子
下载地址
然后菜单 保存网页即可。。
苹果手机不支持,再说了,你们都是土豪,也看不上我做的,毕竟,分分钟上千万啊!!!!
请注意,必须下载器上面我说的浏览器才有用,因为这是我和素材火老板商量好了的。。。。
当然啦,有的源码需要需要用另外的软件才能获取,,,,
如果你是土豪,欢迎签到购买,注册6个账号,每天每个账号签到一次,只需要10天左右,你需要的模板几乎都能下载完毕了的。。。。

继续阅读 »

我发布的模板是基于
素材火 制作的
如果你是安卓手机,请先下载
百度浏览器 打开我发的模板帖子
下载地址
然后菜单 保存网页即可。。。
如果你是windows电脑,请先下载
360极速浏览器 打开我发的模板帖子
下载地址
然后菜单 保存网页即可。。
苹果手机不支持,再说了,你们都是土豪,也看不上我做的,毕竟,分分钟上千万啊!!!!
请注意,必须下载器上面我说的浏览器才有用,因为这是我和素材火老板商量好了的。。。。
当然啦,有的源码需要需要用另外的软件才能获取,,,,
如果你是土豪,欢迎签到购买,注册6个账号,每天每个账号签到一次,只需要10天左右,你需要的模板几乎都能下载完毕了的。。。。

收起阅读 »

蓝色风格p2p众筹平台手机网站模板【原创】

自定义模板

蓝色风格p2p众筹平台手机网站模板【原创】
开局点我下载

继续阅读 »

蓝色风格p2p众筹平台手机网站模板【原创】
开局点我下载

收起阅读 »

简单的手机移动端餐饮美食商城首页模板

自定义模板

简单的手机移动端餐饮美食商城首页模板
就快了点我下载

简单的手机移动端餐饮美食商城首页模板
就快了点我下载

红色风格手机移动端美国签证移民网站模板【原创】

自定义模板

红色风格手机移动端美国签证移民网站模板【原创】
 兔兔
下载地址

继续阅读 »

红色风格手机移动端美国签证移民网站模板【原创】
 兔兔
下载地址

收起阅读 »

浅橙色手机端家居装饰品DIY商城模板【原创】

自定义模板

浅橙色手机端家居装饰品DIY商城模板【原创】
就快了下载地址

继续阅读 »

浅橙色手机端家居装饰品DIY商城模板【原创】
就快了下载地址

收起阅读 »

养老惠手机wap商城模板【原创】

自定义模板

养老惠手机wap商城模板【原创】

心里苦
下载地址

养老惠手机wap商城模板【原创】

心里苦
下载地址

利民手机wap商城全站模板下载【原创】

自定义模板

利民手机wap商城全站模板下载【
我看看原创】
下载地址

继续阅读 »

利民手机wap商城全站模板下载【
我看看原创】
下载地址

收起阅读 »

mui框架汽车美容维修4S店手机网站模板【原创】

自定义模板

mui框架汽车美容维修4S店手机网站模板【原创】
热天
下载地址

继续阅读 »

mui框架汽车美容维修4S店手机网站模板【原创】
热天
下载地址

收起阅读 »

手机app前端开发MUI框架模板

自定义模板

手机app前端开发MUI框架模板

演示
下载地址

继续阅读 »

手机app前端开发MUI框架模板

演示
下载地址

收起阅读 »

基于mui框架的服装包包手机商城模板

自定义模板

基于mui框架的服装包包手机商城模板
下载地址
演示贴图

继续阅读 »

基于mui框架的服装包包手机商城模板
下载地址
演示贴图

收起阅读 »