vue用mand-mobile ui做交易所移动版实战示例

先展示几个界面:

目录结构:

main.js

// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import * as FastClick from "fastclick"
import App from './App'
import router from './router'
import './styles/theme.styl'
import './styles/global.css'
import store from './store/store'import axios from 'axios'
import VueAxios from 'vue-axios'
Vue.use(VueAxios,axios);import qs from 'qs';
Vue.prototype.$qs = qs;// 引入vue-cookies
import VueCookies from 'vue-cookies'
Vue.use(VueCookies)//import $ from 'jquery'
//import 'jquery'FastClick.attach(document.body)Vue.config.productionTip = false/* eslint-disable no-new */
window.Vue = new Vue({el: '#app',router,store,components: { App },template: '<App/>'
})

  router/index.js

import Vue from 'vue'
import Router from 'vue-router'
import Home from '@/views/home'
import Home2 from '@/views/home2'
import Login from '@/views/login'
import verificationMobile from '@/views/verificationMobile'
import verificationGoogle from '@/views/verificationGoogle'Vue.use(Router)export default new Router({routes: [{path: '/',name: 'Home',component: Home},{path: '/home2',name: 'Home2',component: Home2},{path: '/login',name: 'Login',component: Login},{path: '/verificationMobile',name: 'verificationMobile',component: verificationMobile},{path: '/verificationGoogle',name: 'verificationGoogle',component: verificationGoogle},]
})

  home.vue

<template><main id="home" class="view" role="main"><div class="heading"><h1><span>行情</span></h1></div><div class="toptabs"><md-tabs :titles="titles"><div v-for="(bbTitle,index) in bbTitles" :key="index"><md-field title ><md-field-item name="item0" @click="onClick"><div slot="left">交易量</div><div slot="default">价格</div><div slot="right">日涨跌</div></md-field-item><div v-for="(coin,index) in bbTitle.coin_list" :key="index"><md-field-item name="item1" @click="onClick"><div slot="left"><div class="coin_img"><img :src="$store.state.apis + coin.icon"></div><div class="coin_info"><div class="coin_name">{{coin.title_en.toUpperCase()}}</div><div class="coin_volume">{{coin.trade_num}}</div></div></div><div slot="default"><div class="coin_price"><div class="price_usdt">{{coin.price}}</div><!-- <div class="price_rmb">{{coin.price}}</div> --></div></div><div slot="right"><md-button type="warning" class="coin_up" v-if="coin.is_rise == 1 || coin.is_rise == 0">+{{coin.rise_range}}%</md-button><md-button type="warning" class="coin_down" v-if="coin.is_rise == 2">{{coin.rise_range}}%</md-button></div></md-field-item></div></md-field></div></md-tabs></div><div class="footer_nav"><md-tab-bar:show-ink-bar="false"><div><md-icon name="hollow-plus" size="lg"></md-icon><div>行情</div></div><div><md-icon name="circle-right" size="lg"></md-icon><div>币币</div></div><div @click="handleClick"><md-icon name="right" size="lg"></md-icon><div>我的</div></div></md-tab-bar></div></main>
</template><script>
import {Button,Toast,Tabs,TabBar,Field,FieldItem,Icon,Dialog
} from "mand-mobile";export default {name: "home-view",data() {return {titles: ["USDT","OCC", "ETH", "BTC"],bbTitles: [],bbListShow: false,};},created(){this.bbList();},components: {[Field.name]: Field,[FieldItem.name]: FieldItem,[TabBar.name]: TabBar,[Tabs.name]: Tabs,[Icon.name]: Icon,[Button.name]: Button},methods: {// 获取币币列表数据bbList(){this.$http.post(this.$store.state.apis + "/Index/Trade/tradeMenu",{}).then( res => {var self = this;var arr = res.data.data;this.bbTitles = [arr[3],arr[2],arr[1],arr[0]];console.log('bb列表数据');console.log(this.bbTitles);this.bbListShow = true;});},}
};
</script><style>
.heading {text-align: center;margin-top: 20px;
}
.heading h1 {line-height: 1.15;font-size: 45px;color: #011627;font-weight: bold;text-align: center;
}
.heading h1 span {position: relative;
}
.toptabs{padding: 10px 0px 20px 20px;
}
.md-tab-bar .md-tab-title.active {color: #ff384f !important;
}
.md-tab-bar .ink-bar {background: #ff384f !important;
}
.md-field-item-extra {width: 35%;
}
.md-field-item-content {width: 32%;
}
.md-field-right {width: 33%;
}
.md-field .md-field-content .md-field-item {padding-left: 0px !important;padding-right: 0px !important;
}
.md-tabs .md-tab-content-wrapper .md-tab-content{overflow-y: hidden !important;
}
.coin_img {float: left;margin-right: 10px;
}
.coin_img img {width: 60px;height: 60px;
}
.coin_info {float: right;
}
.coin_info .coin_name {display: block;font-size: 35px;font-weight: 600;color: rgba(1, 22, 39, 1);
}
.coin_info .coin_volume {display: block;font-size: 25px;font-weight: 400;color: rgba(146, 149, 157, 1);
}
.coin_price {float: right;
}
.coin_price .price_usdt {display: block;text-align: left;font-size: 35px;font-weight: 600;color: rgba(1, 22, 39, 1);
}
.coin_price .price_rmb {display: block;text-align: left;font-size: 25px;font-weight: 400;color: rgba(146, 149, 157, 1);
}
.coin_up {font-size: 25px;font-weight: 600;color: #ffffff;background-color: #fc4c4c !important;padding: 20px;width: 170px;
}
.coin_down {font-size: 25px;font-weight: 600;color: #ffffff;background-color: #05c19e !important;padding: 20px;width: 170px;
}
.footer_nav{margin-top: 10px;position: fixed;left: 0px;bottom: 0px;width: 100%;padding-bottom: 20px;
}
</style>

  login.vue

<template><main id="home" class="view" role="main"><div class="heading"><div class="cross"><md-icon name="cross" size="lg" @click="goback()"></md-icon></div><div class="title">登录</div></div><div><md-field><md-input-item ref="input0" v-model="username" title placeholder="用户名/手机号码" :maxlength="12"></md-input-item><md-input-item ref="input1" v-model="password" type="password" title placeholder="登录密码" :maxlength="16"></md-input-item><md-input-item ref="input2" v-model="code" placeholder="请输入验证码" :maxlength="4"><imgslot="right"class="verificationCode":src="srcImg"@click="changeSrcImg()"title=""></md-input-item></md-field></div><div class="login"><md-button @click="loginBtn" class="login-btn">登录</md-button></div></main>
</template><script>
import {Button,Toast,Tabs,TabBar,Field,FieldItem,InputItem,Icon,Dialog
} from "mand-mobile";import $ from 'jquery';
//import axios from 'axios';
import qs from 'qs';export default {name: "login-view",data() {return {username: '',password: '',code: '',srcImg: "",};},created() {var this_ = this;this.$http.post(this.$store.state.apis + "/index/index/getToken",qs.stringify({})).then( res => {this.axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';this.axios.defaults.headers.post['token'] = res.data.data.token;this.axios.defaults.headers.post['lang'] = 'null';this.axios.defaults.withCredentials = true;// 跨域携带cookiethis.$cookies.set("token", res.data.data.token);})setTimeout(function() {this_.changeSrcImg();}, 100);},components: {[Field.name]: Field,[FieldItem.name]: FieldItem,[InputItem.name]: InputItem,[TabBar.name]: TabBar,[Tabs.name]: Tabs,[Icon.name]: Icon,[Button.name]: Button},methods: {goback() {this.$router.go(-1);},changeSrcImg() {this.srcImg =this.$store.state.apis + "/index/login/verify" +"?time=" +new Date().getTime();},loginBtn(){// console.log("loginBtn")var _this = this;            if(this.username == "" || this.username == null || this.username.length < 6 || this.username.length > 12){Toast.failed('用户名输入错误!');this.changeSrcImg();return;}if(this.password == "" || this.password == null || this.password.length < 6 || this.password.length > 16){Toast.failed('密码输入错误!');this.changeSrcImg();return;}if(this.code == '' || this.code == null){Toast.failed('请输入图形验证码');this.changeSrcImg();return;}$(".login-btn").attr("disabled","disabled").css({backgroundColor:"#ccc",borderColor:"#ccc",cursor: "not-allowed"}).children("div").text("正在登录...")this.$http.post(this.$store.state.apis + "/index/login/loginact",qs.stringify({username:this.username,password:this.password,code:this.code})).then(res => {if(res.data.code == 1){// console.log(res.data)if(res.data.data.verifyType == 0){  this.$store.state.token = res.data.data.token;                                    Toast.succeed('登录成功');setTimeout(function(){_this.$store.commit("userInfo",_this); _this.$router.push("/");},500);  }else if(res.data.data.verifyType == 1){this.$router.push({ path: '/verificationGoogle'});}else if(res.data.data.verifyType == 2){this.$router.push({ path: '/verificationMobile'});}                           }else {Toast.failed(res.data.msg);this.changeSrcImg();$(".login-btn").removeAttr("disabled").css({backgroundColor:"#fc9153",borderColor:"#fc9153",cursor: "pointer"}).children("div").text("登录");}}).catch(function (error) {console.log(error);});}}
};
</script><style>
.heading {text-align: right;clear: both;margin-bottom: 30px;
}
.heading .title {text-align: left;padding-left: 40px;line-height: 1.15;font-size: 50px;color: #011627;font-weight: bold;
}
.heading .cross {text-align: right;padding: 0px 20px 20px 0px;
}
.md-input-item-right{
width: 250px !important;
}
.verificationCode {width: 250px !important;display: block;margin-left: 10px;cursor: pointer;
}
.login {padding: 20px;margin-top: 40px;
}
</style>

  

转载于:https://www.cnblogs.com/zdz8207/p/vue-mand-mobile-ui-demo.html

vue用mand-mobile ui做交易所移动版实战示例相关推荐

  1. 【分享】Vue 资源典藏(UI组件、开发框架、服务端、辅助工具、应用实例、Demo示例)...

    Vue 资源典藏,包括:UI组件 开发框架 服务端 辅助工具 应用实例 Demo示例 element ★11612 - 饿了么出品的Vue2的web UI工具套件 Vux ★7503 - 基于Vue和 ...

  2. 基于 Vue JS、Element UI、Nuxt JS的项目PC端前端手册

    基于 Vue JS.Element UI.Nuxt JS的项目PC端前端手册 前言:笔记写于2020年5月左右,刚开始做前端时整理的笔记 1.环境搭建 1.安装nodeJs ​ 官网下载地址:http ...

  3. Vue如何使用Vant ui进行快速开发

    一.什么是Vant ui Vant 是有赞前端团队开源的移动端组件库,于 2017 年开源.是一款轻量.可靠的组件库. 能够大大提高我们的开发速度. ​​​​​​​Vant 2 - Mobile UI ...

  4. 用vue优雅地编写UI组件的几条指导原则

    前言 最近在尝试写几个UI组件,并通过阅读element-ui的源码,与其反复比较,然后认真思考,最后总结出一些自己的一些心得和体会.在造轮子的过程中,既巩固了html,css,js基础,又加深了对v ...

  5. iView 3.3.0 发布,基于 Vue.js 的企业级 UI 组件库

    iView 3.3.0 发布了,代号 Transistor ,iView 是一套基于 Vue.js 的企业级 UI 组件库,主要服务于 PC 界面的中后台产品. 本次更新如下: https://www ...

  6. [vue] vue部署上线前需要做哪些准备工作?

    [vue] vue部署上线前需要做哪些准备工作? router 是不是hash 是否需要配置nginx , publicPath , 是不是要配置cdn 个人简介 我是歌谣,欢迎和大家一起交流前后端知 ...

  7. [vue] 使用vue开发过程你是怎么做接口管理的?

    [vue] 使用vue开发过程你是怎么做接口管理的? 创建一个request.js用于封装axios,在 src/api/request,设置拦截器统一处理请求和相应.封装 axios:request ...

  8. axios vue 加载效果动画_vue+axios+element ui 实现全局loading加载示例

    实现全局loading加载 分析需求,我们只需要在请求发起的时候开始loading,响应结束的时候关闭loading,就这么简单 对不对? import axios from 'axios'; imp ...

  9. npm创建Vue工程【element UI】

    npm创建Vue工程[element UI] 步骤 # 初始化一个名为 hello-vue 的Vue工程 vue init webpack hello-vue# 进入 hello-vue 工程 cd ...

  10. [转]WIN MOBILE UI开发入门

    标 题: [原创]WIN MOBILE UI开发入门 作 者: 打小 时 间: 2009-06-06,12:17:14 链 接: http://bbs.pediy.com/showthread.php ...

最新文章

  1. [转]ASP.NET 缓存(十六)--检索缓存项的值
  2. 华为鸿蒙系统强势来袭,呼之欲出的华为神作——鸿蒙2.0 强势来袭
  3. 【学习笔记】区块链应用判断准则
  4. Activiti 流程启动及节点流转源代码分析
  5. [ASP.NET Core] Static File Middleware
  6. 音视频技术开发周刊 77期
  7. unity烘培单个物体_Unity可编程渲染管线(SRP)教程:二、自定义着色器
  8. 前端学习(2423):补充markdown语法补充
  9. 找出一个数组中唯一一个出现2次的数字
  10. [JS] - onmusewheel事件(兼容IE,FF)
  11. mysql 打印_揭秘MySQL 主从环境中大事务的传奇事迹
  12. 国内三大常见核心期刊体系简介——CSSCI、CSCD与中文核心期
  13. 你为什么要进入IT行业呢?
  14. php里pluck,pluck - 内容管理CMS - PHP开源项目 - 开源吧
  15. Excel表格每页都打印表头
  16. 3月18日短线黑马牛股公开验证
  17. Chrome 谷歌分页打印 去除页眉页脚 点击取消或打印关闭当前窗口
  18. 地址总线、数据总线和控制总线简述
  19. 学生积分管理系统改进-python
  20. 直播app源代码,手机屏幕截取并保存到手机相册

热门文章

  1. matlab 矩阵分解行满秩,matlab生成满秩矩阵
  2. 药物研发检测记录模板-0903不溶性微粒检查法检验原始记录
  3. 罗振宇2017跨年演讲:我们这代人的机会在哪里?
  4. 罗格斯的计算机科学,清华大学计算机科学与技术系
  5. 计算机中职作文,中职作文题目
  6. 低通滤波器的一阶RC电路模型
  7. volatility 基本用法
  8. Java 序列化界新贵 kryo 和熟悉的“老大哥”,就是 PowerJob 的序列化方案
  9. 操作系统中的故障恢复控制台意义非凡
  10. 什么是DDL?其含义及其常用命令解析