• 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

  • 相关阅读:
    inflate, findViewById与setContentView的差别与联系
    Android_程序未处理异常的捕获与处理
    八皇后问题
    兔子--改动Android Studio的快捷键,改动成eclipse的快捷键
    关于cocos2d-x 和安卓之间的相互调用
    《JavaScript》——DOM
    *Android 多线程下载 仿下载助手
    (LeetCode)两个链表的第一个公共节点
    MVC初了解
    URL编码总结
  • 原文地址:https://www.cnblogs.com/junwu/p/6782663.html
Copyright © 2020-2023  润新知