微信小程序

 

const { formatTime, isEmpty } = require('../../utils/util.js')git

var {request} = require("../../utils/request.js")es6

const { validatePlateNum} = require('../../utils/validate.js')api

const { uploadFile,uploadFileTms, getFileBase64 }  = require('../../utils/request.js')服務器

const { newRequest,newRequestTms } = require("../../utils/request") 微信

const {getListByScanCode,submitForm} = require("../../api/carWareApi.js") app

const {testData,testMsg}= require("../../pages/carWare/data.js")ide

const app = getApp()測試

Page({ui

  /**this

   * 頁面的初始數據

   */

  data: {

    dList:'',

    dTextArea_list:[],

    arrList:[],

    loading: false,

    items: [

      { name: 'leave', value: '離庫', checked: false },

      { name: 'reach', value: '到庫', checked: false } 

    ],  

    isShow:false,//提交按鈕是否顯示 true顯示,false不顯示

    carTel:'',//測試手機-18866299257--18653284990

    dCode: '',//輸入的調度單號

    showArrivalTimePicker: false,

    currentDate: new Date().getTime(),

    wareCode:'',//是否直接微信掃一掃獲取數據

    version:'',//開發版仍是體驗版

    formData: {

      isArrival:'',//0到庫,1離庫

      isRecord:'',//0無到庫記錄,1有到庫記錄

      scanCode:'',//掃碼數據

      wareName: '',//倉庫名稱

      wareCode: '',//倉庫編號  

      arrivalTime: formatTime(new Date()),//到庫時間

      djType: '',//登記類型

      vehicleCode:'',//車牌號

      latitude:'',//維度

      longitude:'',//經度

      carTel:'',//司機電話

      fileList:[],//上傳圖片

    },

    formatter(type, value) {

      if (type === 'year') {

        return `${value}年`;

      } else if (type === 'month') {

        return `${value}月`;

      } else if (type === 'day') {

        return `${value}日`;

      } else if (type === 'hour') {

        return `${value}時`;

      } else if (type === 'minute') {

        return `${value}分`;

      }

      return value;

    },

    validateMap: {

      vehicleCode: validatePlateNum

    },

    errMsgShow: {

      vehicleCode: false

    }

  },

  //加載頁面

  onLoad(options){

    //若是是微信掃一掃--直接加載渲染數據

    let{wareCode,version}=this.data

    version = __wxConfig.envVersion;

      //var options={}

      //options.code='cuangcu';

      //var options='/pages/carWare/carWare?wareCode=cangcu'; 

    var obj=JSON.stringify(options);

    console.log("全局onLaunch options==" + obj+'==version='+version) 

    debugger

    if(obj == {}||obj==='{}'){ 

      wareCode=''  

      console.log('options{}微信掃一掃直接【掃碼】'+wareCode) 

    }else{ 

      wareCode=options.code;

      console.log('options.code微信掃一掃直接【掃碼】'+wareCode) 

    } 

    this.setData({wareCode,version}) 

  },

  onReady() {  

  //受權

    let { formData,carTel,latitude,longitude,isShow,wareCode } = this.data 

  // wx.setStorageSync('isAuth', false)  

   var isAuth= wx.getStorageSync('isAuth')

   

   if(isAuth){

    //初始化經緯度 

    wx.getLocation({

      type: 'wgs84',

      isHighAccuracy:true,//提升精度

      success: function (res) {  

        isShow=true;

        formData.latitude=res.latitude; 

        formData.longitude=res.longitude;  

        carTel=wx.getStorageSync('phone');

        formData.carTel=wx.getStorageSync('phone');

      } 

    }) 

   }else{

    wx.showModal({

      title: '請受權當前位置和信息',

      content: '您的信息將用於判斷圍欄和查詢調度單',

      success: function (res) {

        console.log(res)

        if (res.cancel) {

          wx.showToast({

            title: '受權失敗',

            icon: 'none',

            duration: 1000

          }) 

        } else if (res.confirm) {

          wx.openSetting({

            success: function (dataAu) {

              console.log(dataAu)

              if (dataAu.authSetting["scope.userLocation"] == true) {

                wx.showToast({

                  title: '受權成功',

                  icon: 'success',

                  duration: 1000

                })

                wx.setStorageSync('isAuth',true)

              } else {

                wx.showToast({

                  title: '受權失敗',

                  icon: 'none',

                  duration: 1000

                })

              }

            }

          })

        }

      }

    }) 

   }

  //初始化手機 

   var phone= wx.getStorageSync('phone')

   if((phone==null||phone=='')&&isAuth){

     request('/reserve/api/user/check/bind', { open_id: wx.getStorageSync('openId')}).then(res => {

       wx.hideLoading()

       app.globalData.refresh = false

       if(res.status==200&&res.msg=='success'){

         carTel=res.data.tel;

         formData.carTel = res.data.tel; 

         wx.setStorageSync('phone', res.data.tel)  

         this.setData({formData})

         console.log('獲取bind當前用戶手機>>>>>>>>>'+JSON.stringify(this.data.formData)); 

       } 

     }).catch(err => {

       console.log('獲取err當前用戶手機>>>>>>>>>'+err);

       wx.hideLoading()

       wx.showToast({

         title: '服務器內部錯誤,請聯繫管理員',

         icon: 'none',

         duration: 2000

       })

     })

   }else{

     wx.hideLoading()

     formData.carTel=phone; 

     this.setData({formData})

     console.log('獲取當前getStorageSync用戶手機>>>>>>>>>'+JSON.stringify(this.data.formData)); 

   }

  //若是是微信掃一掃--直接加載渲染數據  

  if(wareCode!=''){ 

    formData.scanCode =wareCode

    formData.wareName =wareCode

    formData.wareCode =wareCode

    this.setData({formData}) 

    this.scanCode()

  }

  //選擇到鍵盤組件

    this.setData({

      formData,isShow,

      keyboard: this.selectComponent('#keyboard')

    });

    console.log("獲取當前經緯度:" + JSON.stringify(formData));

  }, 

  showArrivalTimePicker() {

    this.setData({

      showArrivalTimePicker: true

    })

  },

  onCloseArrivalTimePicker() {

    this.setData({

      showArrivalTimePicker: false

    })

  },

  onConfirmArrivalTimePicker(e) {

    const { formData } = this.data

    formData.arrivalTime = formatTime(new Date(e.detail))

    this.setData({

      formData: formData,

      showArrivalTimePicker: false

    })

  },

  //倉庫掃碼

  scanQRCode() {

    let that = this

    let { formData,isShow,carTel,version} = that.data

    var isAuth= wx.getStorageSync('isAuth')

    if(isAuth){

     //初始化經緯度 

     wx.getLocation({

       type: 'wgs84',

       isHighAccuracy:true,//提升精度

       success: function (res) {   

         isShow=true;

         formData.latitude=res.latitude; 

         formData.longitude=res.longitude;  

         formData.carTel=wx.getStorageSync('phone');

         carTel=wx.getStorageSync('phone');

       } 

     }) 

     

     this.setData({formData,isShow,carTel})

     

     console.log("isAuth=true倉庫掃碼獲取當前經緯度:" + JSON.stringify(formData));

    }else{

      isShow=false;

      formData.carTel='';

      carTel='';

      formData.latitude=''; 

      formData.longitude=''; 

      this.setData({formData,isShow,carTel})

      

      console.log("isAuth=false倉庫掃碼獲取當前經緯度:" + JSON.stringify(formData));

    }

    wx.scanCode({

      onlyFromCamera: true,

      success: (res) => { 

        //正式線上版本

        if(version==='release'){

          //體驗版本

          var path=decodeURIComponent(res.path);

          console.log('[微信掃倉庫碼解析地址path='+path)

          var arr = new Array()

          arr=path.split('=')

          debugger

          console.log('[微信掃倉庫碼解析地址1]code='+arr[1]) 

          formData.scanCode = arr[1];

          formData.wareName = arr[1];

          formData.wareCode =arr[1];

          that.setData({formData}) 

          this.scanCode() 

        }else{  

        //體驗版本

          var result=decodeURIComponent(res.result);

          console.log('[微信掃倉庫碼解析地址1]'+result)

          var arr = new Array()

          arr=result.split('=')

          debugger

          console.log('[微信掃倉庫碼解析地址2]'+arr[3])

          var arry = new Array()

          arry=arr[3].split('#')

          console.log('[微信掃倉庫碼解析地址3]'+arry[0])

          formData.scanCode = arry[0];

          formData.wareName = arry[0];

          formData.wareCode =arry[0];

          that.setData({formData}) 

          this.scanCode()

        } 

      }

    }) 

  },

    //調度單掃碼

    scanQRCodeD() {

      let that = this

      let { formData,dCode,dList} = that.data

      wx.scanCode({

        onlyFromCamera: true,

        success: (res) => {

          dCode = res.result

          that.setData({

            dCode:res.result

          }) 

          this.dAdd()

          

        }

      })

    },

    //輸入調度單

  dInput(e) {

    var val=e.detail.value;

    var pattern = new RegExp("[`~!@@#%$\"^&*()=|{}':;',\\[\\].<>/?~!@@#¥……&*()&mdash;—|{}【】‘;:」「'。,、?]")

    if(pattern.test(val)){

      wx.showToast({

        title: '請勿輸入特殊字符',

        icon: 'none',

      }, 1500)

      this.setData({

        dCode:''

      })

    }else{

      this.setData({

        dCode:e.detail.value

      })

    } 

  },

      //輸入調度單

      dInputTel(e) {

        let {formData,carTel} = this.data

         carTel=e.detail.value,

         formData.carTel=e.detail.value,

        this.setData({  carTel,  formData })

      },

  //檢查是否重複

  checkRepeat: function(arr,value) {

    for(var i=0;i<arr.length;i++){

      if(value===arr[i].id){

        return false; 

        }

    } 

    return true;

  },

  //追加

  dAdd: function(e) {

    let {dList,dTextArea_list,arrList} = this.data

    if(this.data.dCode != ''){

      //防止重複追加  

      var isBH=this.checkRepeat(arrList,this.data.dCode) 

      console.log(isBH) 

      //防止重複提交

      if(isBH){

        var item={};

        item.id=this.data.dCode;

        item.value=this.data.dCode;

        arrList.push(item);

        dTextArea_list.push(this.data.dCode)

        this.setData({

          dTextArea_list,

          arrList,

          dCode:'',

          dList:dTextArea_list.join("\n")

        })

      }else{

        wx.showToast({

          title: '調度單已經存在',

          icon:'none'

        },2000) 

      }

    }else{

      wx.showToast({

        title: '請輸入調度單號',

        icon:'none'

      },2000)

    }

  },

  //刪除

  dRemove: function(e) {

    let {dList,dTextArea_list} = this.data

    debugger

    if(dTextArea_list.length != 0) {

      dTextArea_list.pop(this.data.dCode)

      this.setData({

        dList:dTextArea_list.join("\n")

      })

    }else{

      wx.showToast({

        title: '暫無調度單能夠刪除',

        icon:'none'

      },2000)

    }

  },

   //選中

   checkboxChange(e) {

    console.log('checkbox發生change事件,攜帶value值爲:', e.detail.value) 

    const arrList = this.data.arrList

    const values = e.detail.value

    for (let i = 0, lenI = arrList.length; i < lenI; ++i) {

      arrList[i].checked = false

 

      for (let j = 0, lenJ = values.length; j < lenJ; ++j) {

        if (arrList[i].value === values[j]) {

          arrList[i].checked = true

          break

        }

      }

    } 

    this.setData({

      arrList

    })

  },

  //刪除

  delete:function(e){

    let {arrList} = this.data 

    const size=this.data.arrList.length

    const indexs=[];

    if(size>0){

      debugger

      for (let j = 0, lenJ = size; j < size; ++j) {

        console.log(">>>>>>arrList[j].checked>>>>>>"+arrList[j].checked)

        if (arrList[j].checked === false) {

          indexs.push(arrList[j]) 

        } 

      } 

    }else{

      wx.showToast({

        title: '暫無調度單能夠刪除',

        icon:'none'

      },2000)

    } 

    this.setData({

      arrList:indexs

    })

 

  },

   //radio

   radioChange: function(e) {

    let {formData} = this.data 

    formData.djType=e.detail.value;

    this.setData({formData})

  },

 

   //顯示鍵盤,同時設置虛擬輸入框爲激活狀態

  showKeyboard () {

    this.data.keyboard.showKeyboard();

  },

  // 隱藏鍵盤,同時設置虛擬輸入框爲未激活狀態

  hideKeyboard (e) {

    this.data.keyboard.hideKeyboard();

  },

  //配合鍵盤輸入事件:input,獲取輸入內容到虛擬輸入框中

  inputChange (e) {

    const { formData, validateMap, errMsgShow } = this.data

    formData.vehicleCode = e.detail

    if (validateMap.vehicleCode) {

      if (!!e.detail && !validateMap.vehicleCode(e.detail)) {

        errMsgShow.vehicleCode = true

      } else {

        errMsgShow.vehicleCode = false

      }

    }

    this.setData({

      errMsgShow,

      formData

    })

  },

  //圖片上傳--顯示

  afterRead(event) {

    wx.showLoading()

    const { file } = event.detail; 

   for(let i in file ){

    uploadFileTms(file[i].path,'/wechat/uploadFile').then(res=>{ 

      debugger

     newRequestTms({

          //  url:`/exit/api/getFileBase64/${res.fileId}`

          url:`${res.data.fileId}`

        }).then(res64=>{

            const{ fileList = [] } = this.data;

            

            fileList.push({

                url:`data:image/${res.data.fileName.split('.').pop()};base64,` + res64.data,

                isImage:true,

                fileId:res.data.fileId,

                fileName:res.data.fileName,

            })

            this.setData({  fileList })

        })

       

    }).catch(err=>{

        wx.hideLoading()

        console.log('err',err)

        wx.showToast({

          title: '上傳失敗,請重試',

          icon:'none'

        },2000)

    })

   }  

 },

 //刪除圖片

 deleteImage(event) {

  const { index, name } = event.detail;

  const { fileList } = this.data

  if (name == "imageList") {

    fileList.splice(index, 1)

    this.setData({ fileList })

  }

},

//掃碼獲取倉庫數據

scanCode: function(e) {

  let {formData,isShow,items,dList,dCode,dTextArea_list,fileList,arrList } = this.data   

  if(formData.scanCode==''){

    wx.showToast({

      title: '請先掃倉庫碼',

      icon: 'none',

    }, 1500) 

    return

  }

  

  getListByScanCode(formData).then(res => {

    

  // var  res=testData 

    wx.hideLoading()

    if(res.code == 200) {

      //   isArrival:'',//0到庫(圍欄內),1離庫(圍欄外) isRecord:'',//0無到庫記錄,1有到庫記錄

      //圍欄外--提示不能到庫操做

      if(res.data.isArrival=='1'){

        wx.showToast({

          title: '超出容許距離,不能進行到車操做',

          icon: 'none',

        }, 1500) 

      }else{

        //圍欄內--能到庫操做

        isShow=true;

        formData.isArrival=res.data.isArrival; 

      }

      //isRecord:'',//0無到庫記錄,1有到庫記錄

      if(res.data.isRecord=='0'){

        items[0].checked=true;

        formData.djType='leave';

        formData.isRecord=res.data.isRecord;

      }else{

        items[1].checked=true;

        formData.djType='reach';

        formData.isRecord=res.data.isRecord;

      }

      //調度單數據追加

      if(isEmpty(res.data.dCodeList)||res.data.dCodeList.length<=0){

        dList=[],

        dTextArea_list=[],

        dCode='',

        arrList=[],

        wx.showToast({

          title: '未找到運輸任務,請聯繫調度',

          icon: 'none',

        }, 1500) 

      }else{

        dList=[],

        dTextArea_list=[],

        arrList=[],

        dCode=''

        var len=res.data.dCodeList.length;

        var arr=res.data.dCodeList; 

        for(var i=0;i<len;i++){

          var isBH=this.checkRepeat(arrList,arr[i])

          if(isBH){

            var item={};

            item.id=arr[i];

            item.value=arr[i];

            item.checked=false;

            arrList.push(item);

            dTextArea_list.push(arr[i]) 

          } 

        }

        dList=dTextArea_list.join("\n") 

      }

      this.setData({isShow,items,dList,dTextArea_list,arrList,formData})

    }else {

      //isShow=false,

      dList=[],

      dTextArea_list=[],

      arrList=[];

      dCode=''

      wx.showToast({

        title: res.message,

        icon: 'none',

      }, 1500)

    } 

    this.setData({ loading: false,isShow,dList,dTextArea_list,arrList})

  }).catch(err => {

    wx.hideLoading()

    this.setData({ loading: false })

  })

},

 //提交

 submit() {

  let { loading,formData,errMsgShow,dList,fileList,dTextArea_list,arrList } = this.data

  

  if(loading) return

  if (isEmpty(formData.scanCode)) {

    wx.showToast({

      title: '請先掃倉庫碼',

      icon: 'none',

    }, 1000)

    return

  }  

  if (isEmpty(formData.carTel)) {

    wx.showToast({

      title: '請輸入手機號',

      icon: 'none',

    }, 1000)

    return

  } 

  if (isEmpty(arrList)) {

    wx.showToast({

      title: '請輸入調度單',

      icon: 'none',

    }, 1000)

    return

  }else{ 

    const codeList=[];

    for(let i=0;i<arrList.length;++i){

      codeList.push(arrList[i].id);

    } 

    formData.dCode=codeList; 

  }

  if (isEmpty(formData.djType )) {

    wx.showToast({

      title: '請選擇登記類型',

      icon: 'none',

    }, 1000)

    return

  } 

  if (isEmpty(formData.vehicleCode)) {

    wx.showToast({

      title: '請輸入車牌號',

      icon: 'none',

    }, 1000)

    return

  } 

  if(errMsgShow.vehicleCode){

    wx.showToast({

      title: '請輸入正確的車牌號',

      icon: 'none',

    }, 1000)

    return

  } 

  if (isEmpty(fileList)) {

    wx.showToast({

      title: '請上傳車牌照片',

      icon: 'none',

    }, 1000)

    return

  }else{

    formData.fileList=fileList;

  } 

  //未受權,不傳參

  var isAuth= wx.getStorageSync('isAuth')

  if(!isAuth){

    formData.carTel='';

    formData.latitude='';

    formData.longitude='';

  }

  wx.showLoading({

    title: '提交中',

  })

  this.setData({

    loading: true

  })

  

  submitForm(formData).then(res => {

    

    wx.hideLoading()

    if(res.code == 200) {

      wx.showToast({

        title: '提交成功!',

        icon: 'success'

      }, 1500)

      setTimeout(() => { 

        wx.switchTab({

          url: '/pages/workbench/workbench',

        }) 

        // wx.navigateBack({//返回

        //   delta: 1

        // })

      }, 1500)

    }else {

      wx.showToast({

        title: res.message,

        icon: 'none',

      }, 1500)

    }

    this.setData({ loading: false })

  }).catch(err => {

    wx.hideLoading()

    this.setData({ loading: false })

  })

},

//提交驗證 

})

相關文章
相關標籤/搜索