| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387 | // pages/create-order/index.jsimport http from '../../utils/http'import util from '../../utils/util'import api from '../../utils/api'import Dialog from '../../miniprogram_npm/@vant/weapp/dialog/dialog';Page({  /**   * 页面的初始数据   */  data: {    tabs: ['内部设备调用', '调用设备添加'],    tabIndex: 0,    work_points: [],    pointIndex: -1,    id: -1,    project: null,    remark: '',    devices: [],    // create/edit    type: 'create',    order_id: '',    loadedOrder: false,    role: null,    // 审核(check)|确认(pass)|重新提交(re-submit)|退回(back)    actionType: null,    order: null,    canEdit: true,    showBack: false,    showRent: false,    showDate: false,    deviceIndex: -1  },  /**   * 生命周期函数--监听页面加载   */  onLoad: function (options) {    // options = {    //   id: 1,    //   type: 'edit',    //   order_id: 194    // }    var id = options.id ? options.id : 1    var type = options.type ? options.type : 'create'    var order_id = options.order_id ? options.order_id : ''    this.setData({      id,      type,      order_id    })    this.init()  },  init() {    var order_id = this.data.order_id    api.getProject(this)    api.getByName(this, 'work-points/get', 'work_points');    if (order_id) {      var that = this      api.getByName(this, 'orders/detail', 'order', {        id: order_id      }, function (res) {        api.getByName(that, 'orders/getRole', 'role', {          id: that.data.order ? that.data.order.project_id : ''        }, function (res) {          that.updateActionType()          that.initData()        });      });      wx.setNavigationBarTitle({        title: '订单详情',      })    }  },  updateActionType: function () {    var actionType = ''    var role = this.data.role    var order = this.data.order    if (order.level == role.level) {      if (['checking', 'checked'].indexOf(order.status_key) != -1 && role && role.rights && role.rights.applyCheck) actionType = 'check';      else if (order.status_key == 'reject' && role.key == 'machine') actionType = 're-submit'      else if (order.status_key == 'checked' && role.key == 'machine') actionType = 'back'    }    var canEdit = (actionType == 're-submit');    if (order.is_draft == 1) {      canEdit = true      actionType = 'edit'    }    this.setData({      actionType,      canEdit    })  },  navigate: function (e) {    wx.navigateTo({      url: e.currentTarget.dataset.url,    })  },  switchChecked: function (e) {    var index = e.detail.index    var devices = this.data.devices    devices[index].checked = !devices[index].checked    this.setData({      devices    })  },  switchShow: function (e) {    var name = e.currentTarget.dataset.name    var val = this.data[name]    this.setData({      [name]: !val    })  },  check: function (e) {    var type = e.currentTarget.dataset.type    var that = this    var msg = '确认通过审核吗?'    if (type == 'reject') msg = '确认驳回申请吗?'    else if (type == 'pass' || type == 're-submit') msg = '确认提交吗?'    else if (type == 'back') {      this.switchShow(e)      return false    } else if (type == 're-rent') {      this.switchShow(e)      return false    }    Dialog.confirm({        title: '提示',        message: msg,      })      .then(() => {        that.submitCheck(e)      })  },  editDate: function (e) {    var deviceIndex = e.detail.index    var device = this.data.devices[deviceIndex]    var default_dates = [device.start_date, device.end_date]    this.setData({      showDate: true,      default_dates,      deviceIndex    })  },  confirmDate: function (e) {    var [start_date, end_date] = e.detail;    start_date = util.formatDate(start_date)    end_date = util.formatDate(end_date)    var devices = this.data.devices    var deviceIndex = this.data.deviceIndex    if (this.data.actionType == 'back') {      var init_end_date = this.data.devices[deviceIndex].init_end_date      if (init_end_date >= start_date) {        util.error('该设备还在使用中,请重新选择续租时间')        return false;      }    }    devices[deviceIndex].start_date = start_date    devices[deviceIndex].end_date = end_date    devices[deviceIndex].is_change = true    this.setData({      devices,      showDate: false    })  },  submitCheck: function (e) {    var type = e.currentTarget.dataset.type    var is_change = e.currentTarget.dataset.change    var that = this    if (this.data.devices.length <= 0) {      util.error('请选择调用设备');      return false;    }    if (type == 'back') {      var devices = this.data.devices      var find = false;      for (var i = 0; i < devices.length; ++i) {        if (devices[i].checked) {          find = true;          break;        }      }      if (!find) {        util.error('归还设备不能为空');        return false;      }      this.switchShow(e)    }    http({      url: 'orders/check',      data: {        id: this.data.order_id,        type: type,        remark: this.data.remark,        devices: this.data.devices,        is_change: is_change      },      success: function (res) {        if (res.code == 0) {          util.success('操作成功')          setTimeout(function () {            that.init()          }, 1000)        }      }    })  },  initData: function () {    var order = this.data.order,      work_points = this.data.work_points,      pointIndex = this.data.pointIndex    for (var i = 0; i < work_points.length; ++i) {      if (work_points[i].id == order.work_point_id) {        pointIndex = i;        break;      }    }    this.setData({      pointIndex,      remark: order.remark,      devices: order.inner_devices,      loadedOrder: true    })  },  submit: function (e) {    var type = e.currentTarget.dataset.type    var is_draft = type == 'draft' ? 1 : 2    var submit_type = this.data.type    if (this.data.pointIndex < 0) {      util.error('需求工点必填');      return false;    }    if (this.data.devices.length <= 0) {      util.error('请选择调用设备');      return false;    }    if (type == 're-rent') {      var devices = this.data.devices      for (var i = 0; i < devices.length; ++i) {        if (devices[i].start_date <= devices[i].init_end_date) {          util.error('有设备还在使用中,请重新选择续租时间')          return false;        }      }      this.setData({        showRent: false      })    }    var work_point = this.data.work_points[this.data.pointIndex]    var url = (submit_type == 'create' || type == 're-rent') ? 'orders/createInner' : 'orders/updateInner'    wx.setStorageSync('sg-added-devices', [])    var that = this    http({      url: url,      data: {        id: this.data.order_id,        project_id: this.data.id,        work_point_id: work_point.id,        remark: this.data.remark,        devices: this.data.devices,        is_draft: is_draft,        type: type      },      success: function (res) {        if (res.code == 0) {          util.success('操作成功')          setTimeout(function () {            var url = '/pages/order-inner/index?id=' + that.data.id            if (is_draft == 1) {              wx.navigateBack({                delta: 0,              })            } else {              wx.redirectTo({                url: url,              })            }          }, 1000)        }      }    })  },  switchTab: function (e) {    this.setData({      tabIndex: e.currentTarget.dataset.index    })  },  onChange: function (e) {    var name = e.currentTarget.dataset.name    this.setData({      [name]: e.detail.value    })  },  /**   * 生命周期函数--监听页面初次渲染完成   */  onReady: function () {  },  /**   * 生命周期函数--监听页面显示   */  onShow: function () {    if (this.data.type == 'create' || this.data.loadedOrder) {      var devices = wx.getStorageSync('sg-added-devices')      devices = devices ? devices : []      this.setData({        devices      })    }  },  goAdd: function (e) {    var devices = this.data.devices    wx.setStorageSync('sg-added-devices', devices)    this.navigate(e)  },  deleteDevice: function (e) {    wx.showModal({      title: "提示",      content: "是否确定删除",      success: (res) => {        if (res.confirm) {          var index = e.detail.index          var devices = this.data.devices          devices.splice(index, 1)          this.setData({            devices          })        }      }    })  },  /**   * 生命周期函数--监听页面隐藏   */  onHide: function () {  },  /**   * 生命周期函数--监听页面卸载   */  onUnload: function () {  },  /**   * 页面相关事件处理函数--监听用户下拉动作   */  onPullDownRefresh: function () {  },  /**   * 页面上拉触底事件的处理函数   */  onReachBottom: function () {  },  /**   * 用户点击右上角分享   */  onShareAppMessage: function () {  }})
 |