vue2.0 mintUI 学习备忘

一 技术栈:vuecli+vuejs2+mintUI+axios

   vuecli :脚手架工具 vuejs:前端框架  mintUI:基于vuejs移动端UI  axios:vuejs ajax数据交互插件

其中 node版本 v6.2.0

1、安装vue-cli脚手架 cnpm install -g vue-cli

  1.1 cnpm是淘宝提供的镜像工具 安装办法 $ npm install -g cnpm --registry=https://registry.npm.taobao.org

2、执行vue

  2.1 vue list

  2.2 vue init webpack mintui(应用webpack模板 项目名称为mintui)

3、cd mintui / cnpm install / cnpm run dev

  总结用vue-cli共五步

  cnpm install -g vue-cli

  vue init webpack my-project

  cd my-project

  cnpm install

  cnpm run dev

4、安装stylus 不报错方法 1、stylus-loader:"2.4.0" 2、cnpm install

5、目录结构 src   main.js   -> 入口文件

         App.vue  -> vue大组件

          components -> 组件目录 

             attachment attachment.vue ->组件

          list

            list.vue

6、app.vue

<template>
  <div class="container">                 <!-- 从vue2开始 需要有根节点  -->
      <transition name="router-fade" mode="out-in">   <!-- 路由切换淡入淡出的效果-->
        <router-view></router-view>           <!-- 组件容器 --> 
      </transition>
  </div>
</template>

<script type="text/javascript">

</script>

<style lang="stylus" type="text/stylus">            <!-- stylus模板标签 -->
    .router-fade-enter-active, .router-fade-leave-active 
          transition opacity .3s
    
    .router-fade-enter, .router-fade-leave-active 
          opacity  0
        
</style>

7、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';  //引入vue  
import App from './App';  //App.vue主组件
import VueRouter from 'vue-router';  //引入路由
import Vuex from 'vuex';  //引入vuex状态管理 本来想用但因为还没弄明白,暂时放着 
import axios from 'axios';  //axios ajax与服务端数据接口交互需要的插件
import list from './components/list/list.vue';  //列表组件
import goods from './components/goods/goods.vue';  //样本物流
import attachment from './components/attachment/attachment.vue';  //附件组件
import 'mint-ui/lib/style.css';  //mintui的样式表
import MintUI from 'mint-ui';  //引入mint-ui mint-ui为饿了么开源的移动端UI



import { Navbar, TabItem } from 'mint-ui';  //tab切换需要的

import { TabContainer, TabContainerItem } from 'mint-ui';  //tab切换

import { Search } from 'mint-ui';  //搜索

import { InfiniteScroll } from 'mint-ui';  //滚动加载


Vue.config.productionTip = false;  //
Vue.use(VueRouter);        //使用路由
Vue.use(Vuex);           //使用vuex
Vue.use(MintUI);          //使用mintUI
Vue.use(InfiniteScroll);     //使用滚动加载

//Vue.component(MtRadio.name, MtRadio);

Vue.component(Navbar.name, Navbar);  //
Vue.component(TabItem.name, TabItem);

Vue.component(TabContainer.name, TabContainer);
Vue.component(TabContainerItem.name, TabContainerItem);

Vue.component(Search.name, Search);



let app = Vue.extend(App);

const routes = [{    //定义路由
    path:'/',      //默认请求
    component:list    //列表页
},{
    path:'/attachment',  //附件列表
    component:attachment  //
},{
    path:'/goods',    //
    component:goods
}];

const router = new VueRouter({  //注册router
    routes
});



/* eslint-disable no-new */
/*new Vue({
  el: '#app',
  template: '<App/>',
  components: { App }
})*/

let apps = new Vue({  //实例化vue
    template: '<App/>',
      components: { App },
    router
}).$mount("#app");

list.vue

<template>
    <div class="list">
        <mt-navbar v-model="selected">
          <mt-tab-item id="1">已完成</mt-tab-item>
          <mt-tab-item id="2">未完成</mt-tab-item>
        </mt-navbar>
        <!-- tab-container -->
        <mt-tab-container v-model="selected">
          <mt-tab-container-item id="1">
            <ul>
                  <li v-for="task in tasks">
                      <div class="irow">
                          <div class="ileft">患 者 姓 名</div>
                          <div class="im">:</div>
                          <div class="iright">{{task.HZNAME}}</div>
                      </div>
                      <div class="irow">
                          <div class="ileft">订 单 编 号</div>
                          <div class="im">:</div>
                          <div class="iright">{{task.ORDERID}}</div>
                      </div>
                      <div class="irow">
                          <div class="ileft">检测包条码</div>
                          <div class="im">:</div>
                          <div class="iright">{{task.PKG_NUM}}</div>
                      </div>
                      <div class="irow">
                          <div class="ileft">检 测 类 型</div>
                          <div class="im">:</div>
                          <div class="iright">{{task.EXAMNAME}}</div>
                      </div>
                      <div class="irow">
                          <div class="ileft">状 态</div>
                          <div class="im">:</div>
                          <div class="iright">订单未完成</div>
                      </div>
                      <div class="irow">
                          <div class="ileft">送 检 日 期</div>
                          <div class="im">:</div>
                          <div class="iright">{{task.SEND_TIME}}</div>
                      </div>
                      <div class="icount">
                          <!-- <router-link to="./attachment"><mt-button type="primary" size="small">查看附件</mt-button></router-link> -->
                         <router-link :to="{ path:'./attachment',query:{order_id: task.ORDERID}}"><mt-button type="primary" size="small">查看附件</mt-button></router-link>
                          <router-link to="./goods"><mt-button type="primary" size="small">样本物流</mt-button></router-link>
                          <mt-button type="primary" size="small">报告物流</mt-button>
                      </div>
                  </li>
            </ul>

            <mt-button type="primary" size="large" @click="loadMore">加载更多</mt-button>

          </mt-tab-container-item>

          <mt-tab-container-item id="2">
            <!-- <mt-cell v-for="n in 45" :title="'测试 ' + n" /> -->
          </mt-tab-container-item>
        </mt-tab-container>
    </div>
</template>
<script>
import axios from 'axios';
import { Indicator } from 'mint-ui';
export default {
    data () {
        return {
            selected:'1',
            p:1,
            tasks:[]
        }
    },
    methods:{
        loadData (p) {
            Indicator.open('加载中...');
            var that = this;
            axios.get("http://testqywx.origimed.com:18082/weixin-qy/order/Order/userOrderList.json?usercode=sysadmin&orderState=0&page="+p+"&rows=10")
                  .then(response=>{let reason=response.data.reason;for(var v of reason){this.tasks.push(v)};Indicator.close();});
            
        },
        loadMore (){
            this.p++;
            this.loadData(this.p);

        }
    },
    mounted () {
        this.loadData(1);
    }
}
</script>
<style lang="stylus" type="text/stylus">
    .mint-tab-container
        margin-top 2px
    .container ul li
        list-style none
    ul
        padding 0
    .irow
        width 100%
        height 30px
        line-height 30px
        .ileft
            width 40%
            float left
            text-align right
            
        .im
            float left
            width 5%
            padding 0 10px
            text-align center

        .iright
            width 40%
            float left
    .icount
        width 90%
        margin 10px auto 0
        text-align center
        button
            margin-left 14px
    .page-infinite-loading
        text-align center
        line-height 50px
            
</style>

attachment.vue

<template>
    <div class="attachment">
        <div  v-for="task in tasks">
            <div class="page-cell">
                <a class="mint-cell">
                    <div class="mint-cell-left"></div> 
                        <div class="mint-cell-wrapper">
                            <div class="mint-cell-title">
                                <span class="mint-cell-text">附件名称 : {{task.ATTACH_NAME}}</span> 
                            </div>
                            <div class="mint-cell-value">
                                <span></span>
                            </div>
                        </div>
                    <div class="mint-cell-right"></div>
                </a>
                <a class="mint-cell"><!----> 
                    <div class="mint-cell-left"></div>
                    <div class="mint-cell-wrapper">
                        <div class="mint-cell-title"><!----> 
                            <span class="mint-cell-text">
                                <img v-bind:src=task.ATTACH_PATH width="120" height="120">
                            </span> <!---->
                        </div> 
                        <div class="mint-cell-value">
                            <div class="iarticle">
                                <p>样本ID:{{task.ATTACH_ID}}</p>
                                <p>上传环节:{{task.TO_DO}}</p>
                                <p>上传人:{{task.TRANS_NAME}}</p>
                                <p>{{task.TRANS_TIME}}</p>
                            </div>
                        </div>
                    </div> 
                    <div class="mint-cell-right"></div> <!---->
                </a>
            </div>
        </div>
    </div>
</template>
<script>
    import axios from 'axios';
    export default{
        data(){
            return{
                id:'',
                tasks:[]
            }
        },
        methods:{
            loadData:function(){
                this.id = this.$route.query.order_id;
                axios.get("http://testqywx.origimed.com:18082/weixin-qy/order/Order/userOrderFilesList.json?usercode=sysadmin&orderId="+this.id)
                    .then(response=>this.tasks=response.data.reason);
            }
        },
        mounted(){
            this.loadData();
        }

    }
</script>
<style type="text/stylus" lang="stylus">
.mint-cell-title
    margin 10px 0
.iarticle
    width 179px
    height 150px
.mint-cell
    margin-bottom 10px
</style>

这样就形成了一个最简单的例子

最总效果:

mintUI中文文档参考地址http://mint-ui.github.io/docs/#/zh-cn2

原文地址:https://www.cnblogs.com/junwu/p/6782663.html