vue小项目

首先需要安装node,参考官网http://nodejs.cn/

再就是安装vue-cli

npm install vue-cli -g
or
npm install -g @vue/cli

初始化项目

vue init webpack staticweb

安装vue-router

npm install vue-router

安装axios

npm install axios

项目是输入手机号查证书,就2个页面,首页和查询结果页面,静态页面之前已经做好,直接把images,css放在static下

1,main.js可以不动,把页面公共部分放App.vue里面,如

<template>
  <div id="app">
    <header class="header">
      <div class="logo"><img src="static/images/image3x.png" alt="荣誉证书查询" /></div>
    </header>
    <router-view/>
  </div>
</template>

<script>
export default {
  name: 'App'
}
</script>

首页

<!DOCTYPE html>
<html>
  <head>
      <meta charset=utf-8>
      <meta http-equiv=X-UA-Compatible content="IE=edge">
      <link href="images/favicon.ico" rel="icon" type="image/x-ico">
      <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0,minimum-scale=1.0,user-scalable=0" />
      <title>证书查询</title>
      <link href="static/css/style.css" type="text/css" rel="stylesheet">
  </head>
  <body>
    <div id="app"></div>
    <!-- built files will be auto injected -->
  </body>
</html>

2. 在router的index.js里面加入router、axios、以及2个页面的component

import Vue from 'vue'
import axios from 'axios'
import Router from 'vue-router'
import Home from '@/components/Home'
import Result from '@/components/Result'

Vue.use(Router)
Vue.prototype.$axios = axios

export default new Router({
  routes: [
    {
      path: '/',
      name: 'Home',
      component: Home
    },
    {
      path: '/result',
      name: 'Result',
      component: Result
    }
  ]
})

3.首页Home.vue输入手机号

<template>
  <div class="main-view">
    <section class="main">
      <div class="content">
        <p>亲爱的学员:</p>
        <p class="detail">
          XXXXXXXXXXXXXXXXXXXXXXXX。
        </p>
      </div>
    </section>
    <section class="line clearfix">
      <div class="f-l line1"></div>
      <div class="f-l line2"></div>
      <div class="f-r line1"></div>
    </section>
    <section class="select-form">
        <div class="phone clearfix">
          <div class="f-l text-input"><input v-model="phone" type="text" name="phone" id="phone" value="" placeholder="请输入手机号" /></div>
          <div class="f-r close" @click="clearForm"><img src="static/images/hclose.png" alt="关闭" /></div>
        </div>
        <div class="form-submit">
          <button @click="getResult">立即查询</button>
        </div>
    </section>
  </div>
</template>

<script>
export default {
  name: 'Home',
  data () {
    return {
      phone: ''
    }
  },
  methods: {
    getResult () {
      var phone = this.phone
      if (phone === '') {
        alert('请输入手机号')
        return false
      }
      var reg = /^[1][3,4,5,7,8][0-9]{9}$/
      if (!reg.test(phone)) {
        alert('手机号码有误')
        return false
      }
      this.$router.push({name: 'Result', params: { phone: this.phone }})
    },
    clearForm () {
      this.phone = ''
    }
  }
}
</script>
this.$router.push({name: 'Result', params: { phone: this.phone }})

表示隐藏参数,如果需要显示,可以替换params为query

<template>
  <div class="main-view">
    <section class="main">
      <div class="content">
        <p class="detail" id="detail" v-html="content"></p>
      </div>
    </section>
    <section class="line clearfix">
      <div class="f-l line1"></div>
      <div class="f-l line2"></div>
      <div class="f-r line1"></div>
    </section>
    <section class="result" id="result">
      <div class="success" v-html="imgurl"><img src="static/images/loading.gif" width="200" /></div>
    </section>
  </div>
</template>

<script>
export default {
  name: 'Result',
  data () {
    return {
      content: '',
      imgurl: ''
    }
  },
  mounted () {
    this.getResult()
  },
  methods: {
    getResult () {
      var phone = this.$route.params.phone
      this.$axios.get('static/certificate/' + phone + '.jpg', {
        responseType: 'arraybuffer'
      }).then(response => {
        return 'data:image/png;base64,' + btoa(new Uint8Array(response.data).reduce((data, byte) => data + String.fromCharCode(byte), ''))
      }).then(data => {
        this.imgurl = '<img src="' + data + '" />'
        this.content = 'xxxxxxxxxxxxxxxxxxxx!)'
      }).catch(error => {
        console.log(error)
        this.imgurl = 'xxxxxxxxxxxxxxxxxxx'
        this.content = 'xxxxxxxxxxxxxxxxxxxxx'
      })
    }
  }
}
</script>
this.$route.params.phone

表示接收params参数,如果是query

this.$route.query.phone

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值