小程序车辆到库

wx5a0a5e76a9c09 2021-08-10 10:42:09 阅读数:523

本文一共[544]字,预计阅读时长:1分钟~
微信小程序 Git 数据 输入框 ide

 

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

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

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

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

const { newRequest } = require("../../utils/request") 

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

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

const app = getApp()

Page({

  /**

   * 页面的初始数据

   */

  data: {

    dList:'',

    dTextArea_list:[],

    loading: false,

    items: [

      { name: 'leave', value: '离库', checked: false },

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

    ],  

    isShow:true,//提交按钮是否显示 true显示,false不显示

    carTel:'',

    dCode: '',//输入的调度单号

    showArrivalTimePicker: false,

    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

    }

  },

  onReady() {  

    //初始化手机 

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

    var phone= wx.getStorageSync('phone')

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

      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; 

          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)); 

    } 

  //初始化经纬度 

    wx.getLocation({

      type: 'wgs84',

      isHighAccuracy:true,//提高精度

      success: function (res) { 

        latitude=res.latitude;

        longitude=res.longitude; 

        formData.latitude=latitude; 

        formData.longitude=longitude; 

      } 

    }) 

    //选择到键盘组件

    this.setData({

      formData,

      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 } = that.data

    wx.scanCode({

      onlyFromCamera: true,

      success: (res) => {

        console.log(res.result)

        formData.scanCode = res.result

        formData.wareName = res.result

        formData.wareCode = res.result

        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) {

    this.setData({

      dCode:e.detail.value

    })

  },

  //检查是否重复

  checkRepeat: function(arr,value) {

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

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

        return false; 

        }

    } 

    return true;

  },

  //追加

  dAdd: function(e) {

    let {dList,dTextArea_list} = this.data

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

      //防止重复追加  

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

      console.log(isBH)

     // var isBH=dList.search(this.data.dCode)

      debugger

      //防止重复提交

      if(isBH){

        dTextArea_list.push(this.data.dCode)

        this.setData({

          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

    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)

    }

  },

   //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 ){

    uploadFile(file[i].path,'/services/exit/api/minio/uploadFile').then(res=>{ 

     newRequest({

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

        }).then(res64=>{

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

            debugger

            fileList.push({

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

                isImage:true,

                fileId:res.fileId,

                fileName:res.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 } = this.data  

  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';

      }

      //调度单数据追加

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

        wx.showToast({

          title: '未找到运输任务,请联系调度',

          icon: 'none',

        }, 1500) 

      }else{

        var len=res.data.dCodeList.length;

        var arr=res.data.dCodeList;

        debugger

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

          var isBH=this.checkRepeat(dTextArea_list,arr[1])

          if(isBH){

            dTextArea_list.push(arr[i]) 

          } 

        }

        dList=dTextArea_list.join("\n") 

      }

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

    }else {

      wx.showToast({

        title: res.message,

        icon: 'none',

      }, 1500)

    }

    this.setData({ loading: false })

  }).catch(err => {

    wx.hideLoading()

    this.setData({ loading: false })

  })

},

 //提交

 submit() {

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

  if(loading) return

  if (isEmpty(formData.scanCode)) {

    wx.showToast({

      title: '请先扫仓库码',

      icon: 'none',

    }, 1000)

    return

  }  

  if (isEmpty(dList)) {

    wx.showToast({

      title: '请输入调度单',

      icon: 'none',

    }, 1000)

    return

  }else{

    debugger

    formData.dCode=dTextArea_list;

  }

  if (isEmpty(formData.djType )) {

    wx.showToast({

      title: '请选择登记类型',

      icon: 'none',

    }, 1000)

    return

  }

  if (isEmpty(formData.vehicleCode)) {

    wx.showToast({

      title: '请输入车牌号',

      icon: 'none',

    }, 1000)

    return

  }  

  if (isEmpty(fileList)) {

    wx.showToast({

      title: '请上传车牌照片',

      icon: 'none',

    }, 1000)

    return

  }else{

    formData.fileList=fileList;

  }

  wx.showLoading({

    title: '提交中',

  })

  this.setData({

    loading: true

  })

  

  submitForm(formData).then(res => {

    debugger

    wx.hideLoading()

    if(res.code == 200) {

      wx.showToast({

        title: '提交成功!',

        icon: 'success'

      }, 1500)

      setTimeout(() => { 

        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 })

  })

},

//提交验证 

})

版权声明:本文为[wx5a0a5e76a9c09]所创,转载请带上原文链接,感谢。 https://blog.51cto.com/u_13478207/3333686