您现在的位置: 微信小程序 > 微信小程序DEMO >

微信小程序学习用demo:我的快递,快递单号,扫一扫二维码

来源:微信小程序 编辑:易用通 发布时间:01-16热度:
于有一个demo,使用扫一扫功能了,真机测试可用,推荐大家学习研究:
 

 

代码示例:

  1. let req = require( '../../requests/request.js' );
  2. let util = require( '../../utils/util.js' )
  3.  
  4. Page({
  5.     data:{
  6.       radioValue: "",
  7.       radioName: "",
  8.       epxressLists: [],
  9.       saveExpressLists: [],
  10.       words: ["#","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"],
  11.       selectedWord: "top",
  12.       wWidth: 0,
  13.       wHeight: 0,
  14.       isShowModal: false,
  15.       currentTop: 0,
  16.       obj: {},
  17.       animationError: {},
  18.       errorShow: false,
  19.       scale: 1,
  20.       expressObj: [],
  21.       searchInput: ''
  22.     },
  23.     onLoad(obj){
  24.       const wSize =  util.getWindowSize();
  25.       this.setData({wWidth: wSize.wWidth, wHeight: wSize.wHeight, scale: wSize.scale, obj});
  26.       this.getExpressLsit();
  27.     },
  28.     showModal(e) {
  29.       this.setDefault(e)
  30.       this.setData({isShowModal: true})
  31.     },
  32.     changeModalText(e) {
  33.       this.setDefault(e)
  34.     },
  35.     hideModal() {
  36.       this.setData({isShowModal: false})
  37.     },
  38.     setDefault(e){
  39.       const wWidth =  parseFloat(this.data.wWidth)
  40.       const currentTop = parseFloat(e.touches[0].clientY);
  41.       const startTop = (wWidth / 750) * 200;
  42.       const eachLen = (wWidth / 750) * 25;
  43.       let len = currentTop - startTop;
  44.       let selectedWord = [];
  45.       len = len / eachLen
  46.       len = parseInt(len)
  47.       this.setData({selectedWord: this.data.words[len], currentTop})
  48.     },
  49.     radioChange(e) {
  50.       const index = e.currentTarget.dataset.index.split("-")
  51.       const lists = this.data.epxressLists[index[0]]
  52.       const arr = lists.list[index[1]];
  53.       const obj = this.data.obj
  54.       this.setData({radioValue: arr.code, radioName: arr.name})
  55.       obj.key = arr.code
  56.       obj.name = arr.name
  57.       this.setData({obj})
  58.       this.goToDetails()
  59.     },
  60.     goToDetails(){
  61.       const unixTime = new Date().getTime()
  62.       const num =  this.data.obj.num
  63.       const key = this.data.radioValue
  64.       const name = this.data.radioName
  65.  
  66.       const params = {
  67.         data: {tid: unixTime, companyCode: key, logisticCode: num},
  68.         method: 'GET'
  69.       }
  70.  
  71.       util.showLoading("加载中...","loading", 10000)
  72.  
  73.       req.getEpxressData(params, data => {
  74.        
  75.         const status = parseInt(data.status)
  76.         const msg = data.msg || '数据查询异常,请稍后再试' 
  77.         if(data.data === null) {
  78.           this.showError(msg)
  79.           return
  80.         }
  81.         const state = (data.data.state === null) ? data.data.state : parseInt(data.data.state)
  82.         const traces = data.data.traces
  83.  
  84.         if(!data.data.success) {
  85.           this.showError(msg)
  86.           return
  87.         }
  88.         if(traces === null) {
  89.           this.showError('无该单号信息, 请确认单号')
  90.           return
  91.         }
  92.         if(state === null || state < 0) {
  93.           this.showError('无该单号信息, 请确认单号')
  94.           return
  95.         }
  96.         if(status !== 1){
  97.           this.showError(data.details)
  98.           return
  99.         }
  100.  
  101.         if(status === 1 && !!data.data.success && !!traces && parseInt(state) > 0){
  102.           wx.redirectTo({url: '../details/details?num=' + num + '&key=' + key + "&name=" + name})
  103.         }
  104.       }, data => {
  105.       }, data => {
  106.         util.hideToast()
  107.       })
  108.     },
  109.     getExpressLsit() {
  110.       const params = {
  111.         data: {},
  112.         method: 'GET'
  113.       }
  114.  
  115.       req.getEpxressList(params, data => {
  116.         const lists = data
  117.         const arr = lists.data
  118.         let epxressLists = []
  119.         const expressObj = []
  120.  
  121.         for(let i = 0; i < arr.length; i ++) {
  122.           for(let val in arr[i]) {
  123.             for(let j = 0; j < arr[i][val].length; j ++) {
  124.               expressObj.push(arr[i][val][j])
  125.             }
  126.           }
  127.         }
  128.  
  129.         this.setData({expressObj})
  130.  
  131.         for(let i = 0; i < arr.length; i ++) {
  132.           for(let val in arr[i]) {
  133.             epxressLists[i] = {key: val, list:arr[i][val]}
  134.           }
  135.         }
  136.         this.setData({epxressLists, saveExpressLists: epxressLists})
  137.       })
  138.     },
  139.     inputChange(e) {
  140.       let searchInput = e.detail.value;
  141.       this.setData({searchInput})
  142.     },
  143.     clearNum() {
  144.       this.setData({searchInput: ''})
  145.     },
  146.     inputConfirm(e) {
  147.       let words = [];
  148.       let firstWord = e.detail.value;
  149.       let searchList = this.data.searchList;
  150.       firstWord = firstWord.replace(/(^s*)|(s*$)/g, "");
  151.       const expressObj = this.data.expressObj;
  152.  
  153.       if(firstWord.length >= 2) {
  154.         firstWord = firstWord.substring(0,2);
  155.       }
  156.  
  157.       for(let i = 0; i < expressObj.length; i ++) {
  158.         if(expressObj[i].name.indexOf(firstWord) > -1) {
  159.           this.setData({selectedWord: expressObj[i].code})
  160.           break;
  161.         }
  162.       }
  163.     },
  164.     selectWord(e) {
  165.       let firstWord = e.target.dataset.value
  166.       this.getOneList(firstWord)
  167.     },
  168.     getOneList(firstWord) {
  169.       if(!firstWord) return
  170.       firstWord = firstWord[0]
  171.       firstWord = firstWord.toUpperCase()
  172.       this.setData({selectedWord: firstWord})
  173.     },
  174.     showError(text) {
  175.       this.animateError(1)
  176.       this.setData({errorShow: true,errorText: text})
  177.       setTimeout(() => {
  178.         this.animateError(0)
  179.       }, 2000)
  180.       setTimeout(() => {
  181.         this.setData({errorShow: false})
  182.       }, 3000)
  183.     },
  184.     animateError(opacity) {
  185.       let animation = wx.createAnimation({
  186.           duration: 1000,
  187.           timingFunction: 'ease'
  188.       })
  189.       animation.opacity(opacity).step()
  190.       this.setData({
  191.         animationError:animation.export()
  192.       })
  193.  
  194.     }
  195.  
  196. })
复制代码
 

免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。