Преглед изворни кода

其他预约、服务客户的起卸订单,物流订单的手签

shasha пре 18 часа
родитељ
комит
1e7a385ca5

+ 5 - 1
app.json

@@ -16,6 +16,8 @@
     "pages/reservationChargestation/index",
     "pages/reservationChargestation/add",
     "pages/reservationChargestation/edit",
+    "pages/reservationOther/add",
+    "pages/reservationOther/edit",
     "pages/queueCar/index",
     "pages/queueCar/info",
     "pages/queueCar/adjustOrder",
@@ -41,6 +43,7 @@
     "pages/salesOrderMan/edit",
     "pages/salesOrderMan/orderloadAdd",
     "pages/salesOrderMan/orderloadReplace",
+    "pages/salesOrderMan/endSign",
     "pages/signReview/index",
     "pages/signReview/info",
     "pages/signReview/sign",
@@ -76,7 +79,8 @@
         "loadAppoint/index",
         "loadAppoint/info",
         "loadAppoint/allocation",
-        "loadAppoint/dispatch"
+        "loadAppoint/dispatch",
+        "loadAppoint/sign"
       ],
       "independent": false
     }

+ 68 - 0
otherPages/loadAppoint/index.js

@@ -296,5 +296,73 @@ Page({
     }
   },
 
+  //客户驳回
+  rejectFun: function (e) {
+    let _this = this
+    let { id, loadNumber } = e.currentTarget.dataset
+    wx.showModal({
+      title: '提示!',
+      content: `起卸订单号【${loadNumber}】,确定驳回该订单吗?`,
+      confirmColor: '#FF5B5B',
+      success: function (res) {
+        if (res.confirm) {
+          app.request.POST({
+            url: app.API.rejectOrderLoad,
+            params: {
+              id: id
+            },
+            page: _this,
+            isLoadingTxt: '确认中...',
+            successFun: true
+          }).then(res => {
+            wx.showToast({
+              title: '确认成功',
+              icon: 'success',
+              duration: 1000,
+              mask: true
+            })
+            _this.getListFun(); //刷新列表
+          })
+        } else if (res.cancel) {
+
+        }
+      }
+    })
+  },
+
+  //管理员发货确认
+  sendConfirmFun: function (e) {
+    let _this = this
+    let { id, loadNumber } = e.currentTarget.dataset
+    wx.showModal({
+      title: '提示!',
+      content: `起卸订单号【${loadNumber}】,确定现在进行发货确认吗?`,
+      confirmColor: '#FF5B5B',
+      success: function (res) {
+        if (res.confirm) {
+          app.request.POST({
+            url: app.API.sendConfirmLoad,
+            params: {
+              id: id
+            },
+            page: _this,
+            isLoadingTxt: '确认中...',
+            successFun: true
+          }).then(res => {
+            wx.showToast({
+              title: '确认成功',
+              icon: 'success',
+              duration: 1000,
+              mask: true
+            })
+            _this.getListFun(); //刷新列表
+          })
+        } else if (res.cancel) {
+
+        }
+      }
+    })
+  },
+
 
 })

+ 9 - 3
otherPages/loadAppoint/index.wxml

@@ -31,7 +31,7 @@
               <view class="info"><text>订单重量:{{item.orderWeight + '吨'}}</text></view>
               <view class="info"><text>单价:{{item.orderPrice + ' 元/吨'}}</text> / <text>总价:{{item.orderAmount + ' 元'}}</text></view>
              
-              <view class="bottomBtn" wx:if="{{ (roleCodeList == 'dispatcher' && (item.status == '4' || item.status == '5' || item.status == '6') && item.arriveStatus == '2') || (roleCodeList == 'bizAdmin' && (item.status == '5' || item.status == '6')) || ( roleCodeList == 'load' && item.status == '7') }}">
+              <view class="bottomBtn" wx:if="{{ (roleCodeList == 'dispatcher' && (item.status == '4' || item.status == '5' || item.status == '6') && item.arriveStatus == '2') || (roleCodeList == 'bizAdmin' && (item.status == '5' || item.status == '6')) || ( roleCodeList == 'load' && item.status == '7') || (roleCodeList == 'serviceCustomer' && item.status == '8') || (roleCodeList == 'bizAdmin' && item.status == '12') }}">
                 <van-button type="primary" size="small" data-url="allocation?appointId={{item.id}}" wx:if="{{ roleCodeList == 'dispatcher' && (item.status == '4' || item.status == '5' || item.status == '6') && item.arriveStatus == '2' }}" catchtap="toLink" style="margin-right: 20rpx;">起卸调度</van-button>
 
                 <van-button type="info" size="small" data-url="dispatch?appointId={{item.id}}" wx:if="{{ roleCodeList == 'dispatcher' && (item.status == '4' || item.status == '5' || item.status == '6') && item.arriveStatus == '2' }}" catchtap="toLink" style="margin-right: 20rpx;">装货调度</van-button>
@@ -39,6 +39,12 @@
                 <van-button type="danger" size="small" data-id="{{ item.id }}" data-load-number="{{ item.loadNumber }}" wx:if="{{ roleCodeList == 'bizAdmin' && (item.status == '5' || item.status == '6')}}" catchtap="showPopupOver" style="margin-right: 20rpx;">结束</van-button>
 
                 <van-button type="info" size="small" data-id="{{item.id}}" wx:if="{{ roleCodeList == 'load' && item.status == '7' }}" catchtap="showPopupFill">填报</van-button>
+
+                <van-button type="warning" size="small" data-url="endSign?id={{item.id}}" catchtap="toLink" style="margin-right: 20rpx;" wx:if="{{roleCodeList == 'serviceCustomer' && item.status == '8'}}">手签</van-button>
+
+                <van-button type="danger" size="small" data-id="{{item.id}}" data-load-number="{{item.loadNumber}}" wx:if="{{ roleCodeList == 'serviceCustomer' && item.status == '8' }}" catchtap="rejectFun">驳回</van-button>
+
+                <van-button type="primary" size="small" data-id="{{item.id}}" data-load-number="{{item.loadNumber}}" wx:if="{{ roleCodeList == 'bizAdmin' && item.status == '12' }}" catchtap="sendConfirmFun">发货确认</van-button>
               </view>
             </navigator>
           </block>
@@ -70,7 +76,7 @@
 </view>
 
 <!-- 结束 -->
-<van-popup show="{{ showOver }}" position="bottom" round closeable custom-style="width:100%;padding:0rpx 30rpx 160rpx;" bind:close="onClose">
+<van-popup show="{{ showOver }}" position="bottom" round closeable custom-style="width:100%;padding:0rpx 30rpx 160rpx;" bind:close="onCloseOver">
   <view style="height: 90rpx;line-height: 90rpx;text-align: center;">结束</view>
   <form bindsubmit="formSubmitOver">
     <view class="part">
@@ -88,7 +94,7 @@
 </van-popup>
 
 <!-- 填报 -->
-<van-popup show="{{ showFill }}" position="bottom" round closeable custom-style="width:100%;padding:0rpx 30rpx 160rpx;" bind:close="onClose">
+<van-popup show="{{ showFill }}" position="bottom" round closeable custom-style="width:100%;padding:0rpx 30rpx 160rpx;" bind:close="onCloseFill">
   <view style="height: 90rpx;line-height: 90rpx;text-align: center;">填报</view>
   <form bindsubmit="formSubmitFill">
     <view class="part">

+ 10 - 3
otherPages/loadAppoint/info.wxml

@@ -22,9 +22,9 @@
     <van-field label="创建时间" input-align="right" model:value="{{info.createTime}}" readonly></van-field>
     <van-field label="创建人" input-align="right" model:value="{{info.createUserName}}" readonly></van-field>
 
-    <van-field label="结束说明" input-align="right" model:value="{{info.endReason}}" readonly wx:if="{{ info.endReason != '' }}"></van-field>
-    <van-field label="填报重量" input-align="right" model:value="{{info.fillWeight}}" readonly wx:if="{{ info.fillWeight != '' }}"></van-field>
-    <van-field label="填报时间" input-align="right" model:value="{{info.fillTime}}" readonly wx:if="{{ info.fillTime != '' }}"></van-field>
+    <van-field label="结束说明" input-align="right" model:value="{{info.endReason}}" readonly wx:if="{{ info.endReason }}"></van-field>
+    <van-field label="填报重量" input-align="right" model:value="{{info.fillWeight + '吨'}}" readonly wx:if="{{ info.fillWeight }}"></van-field>
+    <van-field label="填报时间" input-align="right" model:value="{{info.fillTime}}" readonly wx:if="{{ info.fillTime }}"></van-field>
   
     <van-field center clearable label="客户手签" placeholder="签字图片" border="{{ false }}" use-button-slot class="radioHeight fieldAutoHeight">
       <view slot="input" class="radioHeightBx" wx:if="{{ info.customerSign }}">
@@ -32,6 +32,13 @@
       </view>
     </van-field>
     <van-field label="签名时间" input-align="right" model:value="{{info.signTime}}" readonly></van-field>
+    
+    <van-field center clearable label="客户结束手签" placeholder="签字图片" border="{{ false }}" use-button-slot class="radioHeight fieldAutoHeight">
+      <view slot="input" class="radioHeightBx" wx:if="{{ info.endSign }}">
+        <van-image slot="input" width="100px" height="100px" src="{{ info.endSign }}" />
+      </view>
+    </van-field>
+    <van-field label="签名时间" input-align="right" model:value="{{info.endSignTime}}" readonly></van-field>
   </view>
   <view style="height: 30px;"></view>
 

+ 14 - 6
pages/index/info.wxml

@@ -18,16 +18,16 @@
     <block wx:if="{{ info.appointmentType == '1' }}">
       <van-field label="订单编号" input-align="right" model:value="{{info.orderNumber}}" readonly></van-field>
     </block>
+    <van-field label="预约状态" input-align="right" readonly>
+      <text slot="button" class="status status{{info.status}}">{{ info.statusName }}</text>
+    </van-field>
 
     <!-- <van-field label="预约类型" input-align="right" readonly>
       <text slot="button" class="status status{{info.appointmentType}}">{{ filters.codeAnalysis(appointmentTypeArray, info.appointmentType, 'dictValue', 'dictLabel') }}</text>
     </van-field> -->
-    <van-field label="预约状态" input-align="right" readonly>
-      <text slot="button" class="status status{{info.status}}">{{ info.statusName }}</text>
-    </van-field>
-    <van-field label="预约分类" input-align="right" readonly  wx:if="{{ info.appointmentType == '2' }}">
+    <!-- <van-field label="预约分类" input-align="right" readonly  wx:if="{{ info.appointmentType == '2' }}">
       <text slot="button" class="status status{{info.appointmentClassify}}">{{ filters.codeAnalysis(appointmentClassifyArray,info.appointmentClassify, 'value', 'label') }}</text>
-    </van-field>
+    </van-field> -->
 
     <!-- 砂石预约 -->
     <block wx:if="{{ info.appointmentType == '1' }}">
@@ -38,13 +38,13 @@
       <van-field label="提货结束时间" input-align="right" model:value="{{info.endTime}}" readonly></van-field>
     </block>
 
+    <!-- 砂石预约  起卸预约 -->
     <block wx:if="{{ info.appointmentType == '1' || info.appointmentType == '3' }}">
       <van-field label="装卸点位" input-align="right" model:value="{{info.loadPoint}}" readonly></van-field>
       <van-field label="装卸开始时间" input-align="right" model:value="{{info.loadBeginTime}}" readonly></van-field>
       <van-field label="装卸结束时间" input-align="right" model:value="{{info.loadEndTime}}" readonly></van-field>
     </block>
 
-
     <!-- 管桩预约 -->
     <block wx:if="{{ info.appointmentType == '5' }}">
       <van-field label="管桩计划单号" input-align="right" value="{{planNumber }}" readonly></van-field>
@@ -55,6 +55,14 @@
       <van-field label="- 结束时间" input-align="right" value="{{ endTime }}" readonly></van-field>
     </block>
 
+    <!-- 其他预约 -->
+    <block wx:if="{{ info.appointmentType == '6' }}">
+      <van-field label="是否过磅" input-align="right" readonly >
+        <text slot="button" class="status status{{info.isWeigh}}">{{ info.isWeigh=='1'?'是':'否' }}</text>
+      </van-field>
+      <van-field label="备注" input-align="right" value="{{ info.remark }}" readonly></van-field>
+    </block>
+
     <van-field label="审核备注" wx:if="{{info.appointmentReason}}" input-align="right" model:value="{{info.appointmentReason}}" readonly></van-field>
 
     <!-- 砂石预约  起卸预约  -->

+ 18 - 1
pages/reservationChargestation/add.js

@@ -31,6 +31,21 @@ Page({
    * 生命周期函数--监听页面加载
    */
   onLoad: function (options) {
+    // 根据缓存获取司机车牌号
+    let getCarNumArr = wx.getStorageSync('nickname')?wx.getStorageSync('nickname').split(''):''
+    let inputPlates = {};
+    for (let i = 0; i < getCarNumArr.length; i++) {
+      inputPlates['index' + i] = getCarNumArr[i]
+    }
+    // 默认填充司机信息
+    this.setData({
+      driverId    : wx.getStorageSync('id'),
+      driverName  : wx.getStorageSync('name'),
+      driverPhone : wx.getStorageSync('phone'),
+      inputPlates : inputPlates,
+      isNewEnergy : getCarNumArr.length > 7 ? true : false,
+      licensePlate: wx.getStorageSync('nickname')
+    })
     //获取司机信息
     this.loadUserData()
   },
@@ -105,8 +120,10 @@ Page({
       warn = "请选择新能源车牌号!";
     } else if (value.licenseNumber.length == 8 && !xreg.test(value.licenseNumber)) {
       warn = "新能源车牌号格式错误!";
-    } else if(value.driverId == ''){
+    } else if(value.driverName == ''){
       warn = "请输入司机姓名!";
+    } else if(value.driverPhone == ''){
+      warn = "请输入司机电话!";
     } 
 
     if (warn != '') {

+ 15 - 0
pages/reservationLoadAppoint/add.js

@@ -37,6 +37,21 @@ Page({
    * 生命周期函数--监听页面加载
    */
   onLoad: function (options) {
+    // 根据缓存获取司机车牌号
+    let getCarNumArr = wx.getStorageSync('nickname')?wx.getStorageSync('nickname').split(''):''
+    let inputPlates = {};
+    for (let i = 0; i < getCarNumArr.length; i++) {
+      inputPlates['index' + i] = getCarNumArr[i]
+    }
+    // 默认填充司机信息
+    this.setData({
+      driverId    : wx.getStorageSync('id'),
+      driverName  : wx.getStorageSync('name'),
+      driverPhone : wx.getStorageSync('phone'),
+      inputPlates : inputPlates,
+      isNewEnergy : getCarNumArr.length > 7 ? true : false,
+      licensePlate: wx.getStorageSync('nickname')
+    })
     this.setData({
       orderId : options.orderId
     })

+ 0 - 187
pages/reservationMan/addOther.js

@@ -1,187 +0,0 @@
-// pages/reservationPipe/add.js
-const app = getApp()
-Page({
-
-  /**
-   * 页面的初始数据
-   */
-  data: {
-    showModal: false,
-    defaultText: '请选择',
-    isSubmitting: false,
-
-    isKeyboard: false, //是否显示车牌输入键盘
-    inputOnFocusIndex: '', //当前锁定的车号位置
-    licensePlate: '', //用于提交
-    inputPlates: '', //用于显示
-
-    driverArray:[], //司机
-    driverIndex:null,
-
-  },
-  //输入框焦点聚焦时隐藏车牌号输入框
-  hideKeybord: function () {
-    this.setData({
-      isKeyboard: false,
-      inputOnFocusIndex: ''
-    })
-  },
-
-  /**
-   * 生命周期函数--监听页面加载
-   */
-  onLoad: function (options) {
-    //获取司机信息
-    this.loadUserData()
-  },
-
-  //获取车牌号
-  licensePlate: function (e) {
-    this.setData({
-      licensePlate: e.detail.carNum
-    })
-  },
-
-  //司机
-  loadUserData:function(loadUserId){
-    app.request.GET({
-      url: app.API.roleUser,
-      params: {
-        roleName : '司机',
-      },
-      page: this,
-      successFun: true
-    }).then(res => {
-      this.setData({
-        driverArray : res.data.data
-      })
-    })
-  },
-
-  //下拉选择
-  bindPickerChange: function (e) { 
-    let { pickername } = e.target.dataset
-    let getIndex = pickername + 'Index'
-    app.util.getPickerIndex(this, getIndex, e);
-    switch (pickername) {
-      case 'driver': //选择司机
-        this.setData({
-          driverMobile  : this.data.driverArray[this.data.driverIndex].phone,
-        })
-        break;
-    }
-  },
-
-  // 单选
-  dangerStatusChange: function (e) {
-    this.setData({
-      [e.currentTarget.dataset.radiotype]: e.detail.value
-    })
-  },
-  //多选
-  checkboxChange: function (e) {
-    this.setData({
-      [e.currentTarget.dataset.checkboxtype]: e.detail
-    })
-  },
-
-  /**
-   * 页面上拉触底事件的处理函数
-   */
-  bindscrolltolowerFun() {
-    
-  },
-
-  //表单提交 carTaskAdd
-  formSubmit: function ({detail:{value}}) {
-    var warn = ""; //弹框时提示的内容
-    let reg = /^1[3-9]\d{9}$/;
-    var xreg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4,5}[A-HJ-NP-Z0-9挂学警港澳]{1}$/;
-    var creg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/;
-    //value.certificateNoImage = this.data.originalInvoicePhoto
-    if (value.licenseNumber == '') {
-      warn = "车牌不能为空!";
-    } else if (value.licenseNumber.length < 8) {
-      warn = "请选择新能源车牌号!";
-    } else if (value.licenseNumber.length == 8 && !xreg.test(value.licenseNumber)) {
-      warn = "新能源车牌号格式错误!";
-    } else if(value.driverId == ''){
-      warn = "请输入司机姓名!";
-    } 
-
-    if (warn != '') {
-      app.util.checkForm(warn);
-    } else {
-      app.request.POST({
-        url: app.API.chargestationAdd,
-        params: value,
-        page: this,
-        isLoadingTxt: '提交中...',
-        isSubmitting: true,
-        successFun: true
-      }).then(res => {
-        wx.showToast({
-          title: '新增成功',
-          icon: 'success',
-          duration: 2000,
-          mask:true,
-          complete: function () {
-            setTimeout(() => {
-              wx.navigateBack()
-            }, 1500) //延迟时间  
-          }
-        })
-      })
-
-    }
-  },
-
-  /**
-   * 生命周期函数--监听页面初次渲染完成
-   */
-  onReady: function () {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面显示
-   */
-  onShow: function () {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面隐藏
-   */
-  onHide: function () {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面卸载
-   */
-  onUnload: function () {
-
-  },
-
-  /**
-   * 页面相关事件处理函数--监听用户下拉动作
-   */
-  onPullDownRefresh: function () {
-
-  },
-
-  /**
-   * 页面上拉触底事件的处理函数
-   */
-  onReachBottom: function () {
-    
-  },
-
-  /**
-   * 用户点击右上角分享
-   */
-  onShareAppMessage: function () {
-
-  }
-})

+ 0 - 18
pages/reservationMan/addOther.json

@@ -1,18 +0,0 @@
-{
-  "navigationBarTitleText": "新增充电桩预约",
-  "usingComponents": {
-    "van-checkbox": "@vant/weapp/checkbox/index",
-    "van-checkbox-group": "@vant/weapp/checkbox-group/index",
-    "van-uploader": "@vant/weapp/uploader/index",
-    "car-num-input": "/components/CarNumInput/index",
-    "van-icon": "@vant/weapp/icon/index",
-    "van-cell": "@vant/weapp/cell/index",
-    "van-cell-group": "@vant/weapp/cell-group/index",
-    "van-field": "@vant/weapp/field/index",
-    "van-button": "@vant/weapp/button/index",
-    "van-popup": "@vant/weapp/popup/index",
-    "van-datetime-picker": "@vant/weapp/datetime-picker/index",
-    "van-action-sheet": "@vant/weapp/action-sheet/index",
-    "van-search": "@vant/weapp/search/index"
-  }
-}

+ 0 - 53
pages/reservationMan/addOther.wxml

@@ -1,53 +0,0 @@
-<!--pages/reservationPipe/add.wxml-->
-<view class="container" style="padding-bottom:100px;">
-  <view class="height20"></view>
-  <view>
-    <form bindsubmit="formSubmit">
-      <view class="part">
-        <van-field required label="车牌号码" readonly border="{{false}}"></van-field>
-        <car-num-input bind:setCarNum="licensePlate" isKeyboard="{{isKeyboard}}" inputOnFocusIndex="{{inputOnFocusIndex}}" inputPlates="{{inputPlates}}" isNewEnergy="{{isNewEnergy}}"></car-num-input>
-        <input name="licenseNumber" value='{{licensePlate}}' hidden='true' />
-      </view>
-        
-      <view class="part">
-        <!-- 司机 -->
-        <van-field label="司机" required input-align="right">
-          <view slot="input" style="width: 100%;">
-            <input name="driverId" value='{{driverArray[driverIndex].id}}' hidden='true' />
-            <picker bindchange="bindPickerChange" value="{{driverIndex}}" range="{{driverArray}}" range-key="name" data-pickername='driver'>
-              <view wx:if="{{driverArray[driverIndex].name}}"> {{driverArray[driverIndex].name}}</view>
-              <view wx:else class="selectPlaceholder">{{ defaultText }}</view>
-            </picker>
-          </view>
-          <view slot="right-icon">
-            <van-icon name="arrow" />
-          </view>
-        </van-field>
-        <van-field label="司机电话" wx:if="{{driverArray[driverIndex].id}}" name="driverMobile" readonly value="{{ driverMobile }}" placeholder="选择司机自动填入" input-align="right">
-        </van-field>
-
-        <van-field label="是否过磅" name="isWeighFlag" value="{{ isWeighFlag }}" required input-align="right" class="radioHeight fieldAutoHeight">
-          <view slot="input" class="radioHeightBx">
-            <radio-group class="radio-group" bindchange="dangerStatusChange" data-radioType="isWeighFlag">
-              <label class="radio">
-                <radio value="1" checked="{{isWeighFlag=='1'}}" color="#4B70EA" />是
-              </label>
-              <label class="radio">
-                <radio value="2" checked="{{isWeighFlag=='2'}}" color="#4B70EA" />否
-              </label>
-            </radio-group>
-          </view>
-        </van-field>
-        <van-field label="备注" name="remark" value="{{ remark }}" type="textarea" input-align="right" placeholder="请输入备注" autosize></van-field>
-      </view>
-
-      <view class="fixedBtn submitBtn">
-        <van-button loading="{{isSubmitting}}" round block disabled="{{isSubmitting}}" loading-text="{{isSubmitting?'提交中...':''}}" type="info" form-type="submit">确定
-        </van-button>
-      </view>
-
-    </form>
-  </view>
-</view>
-
-<wxs module="filters" src="../../utils/filter.wxs"></wxs>

+ 0 - 209
pages/reservationMan/addOther.wxss

@@ -1,209 +0,0 @@
-/* pages/reservationPipe/add.wxss */
-.van-field__label {
-  width: 240rpx !important;
-}
-
-.formTopBlueBg {
-  height: 144rpx;
-  background-color: #0396FF;
-}
-
-.part {
-  border-radius: 16rpx;
-  padding: 20rpx 00rpx;
-  background: #fff;
-  margin-bottom: 20rpx;
-}
-
-picker view {
-  line-height: normal !important;
-}
-
-.heightAuto .van-field__control--right {
-  height: auto !important;
-}
-
-.topProJectInfo {
-  padding: 26rpx 40rpx;
-}
-.labelTitle{
-  padding: 0 16px;
-  color: #323233;
-  font-size: 14px;
-}
-.topItem1 .van-cell {
-  padding-top: 6rpx !important;
-  padding-bottom: 6rpx !important;
-}
-.topItem {
-  position: relative;
-  padding-bottom: 16rpx;
-}
-.topItem2::after{
-  border:0 none !important
-}
-.topItem::after {
-  border-bottom: 1px solid #ebedf0;
-  bottom: 0;
-  box-sizing: border-box;
-  content: " ";
-  left: 16px;
-  pointer-events: none;
-  position: absolute;
-  right: 16px;
-  transform: scaleY(.5);
-  transform-origin: center;
-  border-bottom-width: 1px;
-  border-bottom-style: solid;
-  border-bottom-color: rgb(235, 237, 240);
-}
-
-.proTitle {
-  font-size: 36rpx;
-  font-weight: bold;
-  color: rgba(0, 0, 0, 0.85);
-}
-
-.proJectInfoCode {
-  width: 100%;
-  display: flex;
-  padding: 10rpx 10rpx 0 0rpx;
-  color: rgba(0, 0, 0, 0.65);
-  justify-content: space-between;
-}
-
-.proJectInfoCode>view:last-child {
-  padding: 0 16rpx;
-  display: flex;
-  height: 40rpx;
-  line-height: 40rpx;
-  color: #2C6CEC;
-  font-size: 20rpx;
-  border-radius: 20rpx;
-  border: 1px solid #2C6CEC;
-  align-items: center;
-  white-space: nowrap;
-}
-
-.radioHeight .radioHeightBx {
-  width: 100%;
-}
-radio-group {
-  text-align: right;
-}
-.fieldAutoHeight .van-field__body,.fieldAutoHeight .van-field__control {
-  height: auto !important;
-  text-align: left;
-  line-height: 30px;
-}
-.ysType{
-  flex: 1;
-  text-align: right;
-}
-.ysType text:first-child{
-  margin-right: 12rpx;
-}
-.ysType text{
-  display: inline-block;
-  width: 80rpx;
-  height: 48rpx;
-  line-height: 48rpx;
-  text-align: center;
-  background: #E1E1E1;
-  border: 1px solid #E1E1E1;
-  border-radius: 4rpx;
-  box-sizing: border-box;
-}
-.ysType .active{
-  color: #2C6CEC;
-  border: 1rpx solid #2C6CEC;
-  background: transparent;
-}
-
-.otherInfo{
-  padding: 10rpx 10rpx 0 0rpx;
-  color: rgba(0, 0, 0, 0.65);
-}
-.otherInfo .status {
-  clear: both;
-}
-
-.type{
-  display: inline-block;
-  padding: 4rpx 10rpx;
-  color: #2C6CEC;
-  background: rgba(44,108,236,0.1);
-}
-.type1{
-  color: #52C41A;
-  background: rgba(82,196,26,0.1);
-}
-.type2{
-  color: #FAAD14;
-  background: rgba(250,173,20,0.1);
-}
-
-.setHeight{
-  height: 120rpx !important;
-}
-.radioHeight .radioHeightBx{
-  width: 100%;
-}
-.radioHeight .van-field__body {
-  height: 28px;
-  line-height: 25px;
-}
-.bottomBtn view:first-child {
-  flex: 1;
-}
-.chooseDriver{
-  width: 600rpx;
-  height: 100vh;
-  display: flex;
-  flex-direction: column;
-}
-.dialogUser {
-  flex: 1;
-  width: 100%;
-  padding: 30rpx 0;
-  box-sizing: border-box;
-  overflow-y: auto;
-}
-.spacialName {
-  display: inline-block;
-  width: 64rpx;
-  height: 64rpx;
-  line-height: 64rpx;
-  margin: 0 20rpx 0 10rpx;
-  border-radius: 50%;
-  text-align: center;
-  color: #3764FF;
-  font-size: 24rpx;
-  background-color: rgba(55, 100, 255, 0.0510);
-}
-.bottomBtn {
-  display: flex;
-  width: 100%;
-  padding: 20rpx;
-  font-size: 28rpx;
-  box-sizing: border-box;
-  align-items: center;
-  justify-content: space-around;
-  border-top: 1px solid #f9f7f9;
-}
-
-/* 选人弹窗 */
-.chooseUserMain {
-  width: 600rpx;
-  height: 100vh;
-  display: flex;
-  flex-direction: column;
-}
-
-.dialogUser {
-  flex: 1;
-  width: 100%;
-  padding: 30rpx 0;
-  box-sizing: border-box;
-  overflow-y: auto;
-}

+ 0 - 204
pages/reservationMan/editOther.js

@@ -1,204 +0,0 @@
-// pages/reservationPipe/edit.js
-const app = getApp()
-Page({
-
-  /**
-   * 页面的初始数据
-   */
-  data: {
-    showModal: false,
-    defaultText: '请选择',
-    isSubmitting: false,
-
-    isKeyboard: false, //是否显示车牌输入键盘
-    inputOnFocusIndex: '', //当前锁定的车号位置
-    licensePlate: '', //用于提交
-    inputPlates: '', //用于显示
-
-    driverArray:[], //司机
-    driverIndex:null,
-  },
-  //输入框焦点聚焦时隐藏车牌号输入框
-  hideKeybord: function () {
-    this.setData({
-      isKeyboard: false,
-      inputOnFocusIndex: ''
-    })
-  },
-
-  /**
-   * 生命周期函数--监听页面加载
-   */
-  onLoad: function (options) {
-    //获取详情
-    var pages = getCurrentPages();
-    var prevPage = pages[pages.length - 2];
-    let getInfo = prevPage.data.resData[options.index]
-
-    let getCarNumArr = getInfo.licenseNumber ? getInfo.licenseNumber.split('') : ''
-    let inputPlates = {};
-    for (let i = 0; i < getCarNumArr.length; i++) {
-      inputPlates['index' + i] = getCarNumArr[i]
-    }
-
-    this.setData({
-      info: getInfo,
-      driverMobile: getInfo.driverMobile,
-      inputPlates: inputPlates,
-      isNewEnergy: getCarNumArr.length > 7 ? true : false,
-      licensePlate: getInfo.licenseNumber,
-    })
-    //获取司机信息
-    this.loadUserData()
-  },
-
-  //获取车牌号
-  licensePlate: function (e) {
-    this.setData({
-      licensePlate: e.detail.carNum
-    })
-  },
-
-  //司机
-  loadUserData:function(loadUserId){
-    app.request.GET({
-      url: app.API.roleUser,
-      params: {
-        roleName : '司机',
-      },
-      page: this,
-      successFun: true
-    }).then(res => {
-      this.setData({
-        driverArray : res.data.data,
-        driverIndex : app.util.getDicIndex(res.data.data, this.data.info.driverId, 'id')
-      })
-    })
-  },
-
-  //下拉选择
-  bindPickerChange: function (e) { 
-    let { pickername } = e.target.dataset
-    let getIndex = pickername + 'Index'
-    app.util.getPickerIndex(this, getIndex, e);
-    switch (pickername) {
-      case 'driver': //选择司机
-        this.setData({
-          driverMobile  : this.data.driverArray[this.data.driverIndex].phone,
-        })
-        break;
-    }
-  },
-
-  // 单选
-  dangerStatusChange: function (e) {
-    this.setData({
-      [e.currentTarget.dataset.radiotype]: e.detail.value
-    })
-  },
-  //多选
-  checkboxChange: function (e) {
-    this.setData({
-      [e.currentTarget.dataset.checkboxtype]: e.detail
-    })
-  },
-
-  /**
-   * 页面上拉触底事件的处理函数
-   */
-  bindscrolltolowerFun() {
-    
-  },
-
-  //表单提交 carTaskAdd
-  formSubmit: function ({detail:{value}}) {
-    var warn = ""; //弹框时提示的内容
-    let reg = /^1[3-9]\d{9}$/;
-    var xreg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4,5}[A-HJ-NP-Z0-9挂学警港澳]{1}$/;
-    var creg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/;
-    if (value.licenseNumber == '') {
-      warn = "车牌不能为空!";
-    } else if (value.licenseNumber.length < 8) {
-      warn = "请选择新能源车牌号!";
-    } else if (value.licenseNumber.length == 8 && !xreg.test(value.licenseNumber)) {
-      warn = "新能源车牌号格式错误!";
-    } else if(value.driverId == ''){
-      warn = "请输入司机姓名!";
-    } 
-
-    if (warn != '') {
-      app.util.checkForm(warn);
-    } else {
-      app.request.POST({
-        url: app.API.appointmentPipeEdit,
-        params: value,
-        page: this,
-        isLoadingTxt: '提交中...',
-        isSubmitting: true,
-        successFun: true
-      }).then(res => {
-        wx.showToast({
-          title: '修改成功',
-          icon: 'success',
-          duration: 2000,
-          mask:true,
-          complete: function () {
-            setTimeout(() => {
-              wx.navigateBack()
-            }, 1500) //延迟时间  
-          }
-        })
-      })
-
-    }
-  },
-
-  /**
-   * 生命周期函数--监听页面初次渲染完成
-   */
-  onReady: function () {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面显示
-   */
-  onShow: function () {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面隐藏
-   */
-  onHide: function () {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面卸载
-   */
-  onUnload: function () {
-
-  },
-
-  /**
-   * 页面相关事件处理函数--监听用户下拉动作
-   */
-  onPullDownRefresh: function () {
-
-  },
-
-  /**
-   * 页面上拉触底事件的处理函数
-   */
-  onReachBottom: function () {
-    
-  },
-
-  /**
-   * 用户点击右上角分享
-   */
-  onShareAppMessage: function () {
-
-  }
-})

+ 0 - 20
pages/reservationMan/editOther.json

@@ -1,20 +0,0 @@
-{
-  "navigationBarTitleText": "修改充电桩预约",
-  "usingComponents": {
-    "van-checkbox": "@vant/weapp/checkbox/index",
-    "van-checkbox-group": "@vant/weapp/checkbox-group/index",
-    "van-uploader": "@vant/weapp/uploader/index",
-    "car-num-input": "/components/CarNumInput/index",
-    "van-icon": "@vant/weapp/icon/index",
-    "van-cell": "@vant/weapp/cell/index",
-    "van-cell-group": "@vant/weapp/cell-group/index",
-    "van-field": "@vant/weapp/field/index",
-    "van-button": "@vant/weapp/button/index",
-    "van-popup": "@vant/weapp/popup/index",
-    "van-datetime-picker": "@vant/weapp/datetime-picker/index",
-    "van-radio": "@vant/weapp/radio/index",
-    "van-radio-group": "@vant/weapp/radio-group/index",
-    "van-action-sheet": "@vant/weapp/action-sheet/index",
-    "van-search": "@vant/weapp/search/index"
-  }
-}

+ 0 - 1
pages/reservationMan/editOther.less

@@ -1 +0,0 @@
-/* pages/reservationPipe/edit.wxss */

+ 0 - 41
pages/reservationMan/editOther.wxml

@@ -1,41 +0,0 @@
-<!--pages/reservationPipe/edit.wxml-->
-<view class="container" style="padding-bottom:100px;">
-  <view class="height20"></view>
-  <view>
-    <form bindsubmit="formSubmit">
-      <input name="id" value='{{info.id}}' hidden='true' />
-      <view class="part">
-        <van-field required label="车牌号码" readonly border="{{false}}"></van-field>
-        <car-num-input bind:setCarNum="licensePlate" isKeyboard="{{isKeyboard}}" inputOnFocusIndex="{{inputOnFocusIndex}}" inputPlates="{{inputPlates}}" isNewEnergy="{{isNewEnergy}}"></car-num-input>
-        <input name="licenseNumber" value='{{licensePlate}}' hidden='true' />
-      </view>
-        
-      <view class="part">
-        <!-- 司机 -->
-        <van-field label="司机" required input-align="right">
-          <view slot="input" style="width: 100%;">
-            <input name="driverId" value='{{driverArray[driverIndex].id}}' hidden='true' />
-            <picker bindchange="bindPickerChange" value="{{driverIndex}}" range="{{driverArray}}" range-key="name" data-pickername='driver'>
-              <view wx:if="{{driverArray[driverIndex].name}}"> {{driverArray[driverIndex].name}}</view>
-              <view wx:else class="selectPlaceholder">{{ defaultText }}</view>
-            </picker>
-          </view>
-          <view slot="right-icon">
-            <van-icon name="arrow" />
-          </view>
-        </van-field>
-
-        <van-field label="司机电话" wx:if="{{driverArray[driverIndex].id}}" name="driverMobile" readonly value="{{ driverMobile }}" placeholder="选择司机自动填入" input-align="right">
-        </van-field>
-      </view>
-
-      <view class="fixedBtn submitBtn">
-        <van-button loading="{{isSubmitting}}" round block disabled="{{isSubmitting}}" loading-text="{{isSubmitting?'提交中...':''}}" type="info" form-type="submit">确定
-        </van-button>
-      </view>
-
-    </form>
-  </view>
-</view>
-
-<wxs module="filters" src="../../utils/filter.wxs"></wxs>

+ 144 - 8
pages/reservationMan/index.js

@@ -1,5 +1,6 @@
 // pages/reservationMan/index.js
 const app = getApp();
+var startPoint
 Page({
 
   /**
@@ -10,6 +11,15 @@ Page({
     loginStatus: wx.getStorageSync('loginStatus') ? wx.getStorageSync('loginStatus') : false,
     roleCodeList: wx.getStorageSync('roleCodeList') ? wx.getStorageSync('roleCodeList') : '',
 
+    filterWidth: 0, //获取顶部筛选宽度
+    filterHeight: 0, //获取顶部筛选高度
+    safeAreaHeight: 0, //底部安全区域的高度
+    //按钮位置参数
+    buttonTop: 0,
+    buttonLeft: 0,
+    windowHeight: '',
+    windowWidth: '',
+
     searchVal: '', //筛选条件
     type:'',//预约类型
     appointmentClassifyArray: [
@@ -60,9 +70,43 @@ Page({
    * 生命周期函数--监听页面加载
    */
   onLoad(options) {
+    this.setData({
+      safeAreaHeight: app.globalData.windowInfo.screenHeight - app.globalData.systemInfo.safeArea.bottom
+    })
+    // 使用选择器选择节点
+    this.getFilterHeight()
+    
+    //获取页面高度设置新增按钮的初始位置
+    var that = this;
+    wx.getSystemInfo({
+      success: function (res) {
+        // 高度,宽度 单位为px
+        that.setData({
+          windowHeight: res.windowHeight, //屏幕宽度、高度
+          windowWidth: res.windowWidth,
+          buttonTop: res.windowHeight * 0.8 - that.data.safeAreaHeight-60, //这里定义按钮的初始位置
+          buttonLeft: res.windowWidth * 0.80, //这里定义按钮的初始位置
+        })
+      }
+    })
 
   },
 
+  //获取顶部筛选区域的高度
+  getFilterHeight:function(){
+    let that = this;
+    // 使用顶部筛选高度选择器选择节点的高度
+    const query = wx.createSelectorQuery();
+    query.select('.topFilter').boundingClientRect(function (rect) {
+      if(rect){
+        that.setData({
+          filterWidth: rect.width,
+          filterHeight: rect.height,
+        });
+      }
+    }).exec();
+  },
+
   /**
    * 生命周期函数--监听页面初次渲染完成
    */
@@ -364,17 +408,75 @@ Page({
   },
   // 审核E
 
+  //申请
+  changeAdd() {
+    wx.navigateTo({
+      url: '/pages/reservationOther/add'
+    })
+  },
+
+  //删除
+  delFun: function (e) {
+    let _this = this
+    let { id, licenseNumber } = e.currentTarget.dataset
+    wx.showModal({
+      title: '提示!',
+      content: `删除【${licenseNumber}】其他预约后不可恢复。确定要删除吗?`,
+      confirmColor: '#FF5B5B',
+      success: function (res) {
+        if (res.confirm) {
+          app.request.POST({
+            url: app.API.otherDelete,
+            params: [{
+              id: id
+            }],
+            page: _this,
+            isLoadingTxt: '删除中...',
+            successFun: true
+          }).then(res => {
+            wx.showToast({
+              title: '删除成功',
+              icon: 'success',
+              duration: 1000,
+              mask: true
+            })
+            _this.getListFun(); //刷新列表
+          })
+        } else if (res.cancel) {
+
+        }
+      }
+    })
+  },
+
+  //修改
+  toUpdate: function (e) {
+    let { id, index } = e.currentTarget.dataset
+    wx.navigateTo({
+      url: '/pages/reservationOther/edit?id=' + id + '&index=' + index,
+    })
+    
+  },
+
+  //页面跳转
+  toLink: function (e) {
+    let { url } = e.currentTarget.dataset
+    wx.navigateTo({
+      url: url
+    })
+  },
+
   /**
    * 生命周期函数--监听页面隐藏
    */
-  onHide() {
+  onHide: function () {
 
   },
 
   /**
    * 生命周期函数--监听页面卸载
    */
-  onUnload() {
+  onUnload: function () {
 
   },
 
@@ -398,23 +500,57 @@ Page({
   onReachBottom: function () {
     this.data.page++;
     let params = {
-      current: this.data.page,
-      size: this.data.limit,
-      licenseNumber:this.data.searchVal,
-      //status:1
+      current       : this.data.page,
+      size          : this.data.limit,
+      licenseNumber : this.data.searchVal,
+      // reservationStatus: this.data.applyData[this.data.setIndex].value,
+      type          : this.data.type,
     }
     app.request.pageOther({
       url: app.API.appointmentPage,
       page: this,
       params: params,
-      loadType: true //加载类型,是否是下拉加载
+      loadType: true, //加载类型,是否是下拉加载
     });
+    //this.getTypeCount()
+  },
+
+  //以下是按钮拖动事件
+  buttonStart: function (e) {
+    startPoint = e.touches[0] //获取拖动开始点
+  },
+  buttonMove: function (e) {
+    var endPoint = e.touches[e.touches.length - 1] //获取拖动结束点
+    //计算在X轴上拖动的距离和在Y轴上拖动的距离
+    var translateX = endPoint.clientX - startPoint.clientX
+    var translateY = endPoint.clientY - startPoint.clientY
+    startPoint = endPoint //重置开始位置
+    var buttonTop = this.data.buttonTop + translateY
+    var buttonLeft = this.data.buttonLeft + translateX
+    //判断是移动否超出屏幕
+    if (buttonLeft + 60 >= this.data.windowWidth) {
+      buttonLeft = this.data.windowWidth - 60;
+    }
+    if (buttonLeft <= 0) {
+      buttonLeft = 0;
+    }
+    if (buttonTop <= this.data.filterHeight) {
+      buttonTop = this.data.filterHeight
+    }
+    if (buttonTop + 60 + 48 + this.data.safeAreaHeight >= this.data.windowHeight) {
+      buttonTop = this.data.windowHeight - 60 - 48 - this.data.safeAreaHeight;
+    }
+    this.setData({
+      buttonTop: buttonTop,
+      buttonLeft: buttonLeft
+    })
   },
+  buttonEnd: function (e) {},
 
   /**
    * 用户点击右上角分享
    */
-  onShareAppMessage() {
+  onShareAppMessage: function () {
 
   }
 })

+ 114 - 112
pages/reservationMan/index.wxml

@@ -1,127 +1,129 @@
 <!--pages/index/index.wxml-->
 <view class="container listMain">
   <block wx:if="{{loginStatus}}">
-      <view url="" class="addBtn" catch:tap="changeAdd" hover-class="none" catchtouchmove="buttonMove" 
-      wx:if="{{ appointmentType == '6' }}" bindtouchstart="buttonStart" bindtouchend="buttonEnd" style="top:{{buttonTop}}px;left:{{buttonLeft}}px;">
-        <van-icon name="plus" size="30px" />
-      </view>
+    <view url="" class="addBtn" catch:tap="changeAdd" hover-class="none" catchtouchmove="buttonMove" bindtouchstart="buttonStart" bindtouchend="buttonEnd" style="top:{{buttonTop}}px;left:{{buttonLeft}}px;" wx:if="{{ appointmentType == '6' }}">
+      <van-icon name="plus" size="30px" />
+    </view>
 
-      <van-sticky>
-        <view class="topFilter">
-          <view class="topSeach">
-            <view class="rightBox" style="position: relative;">
-              <van-search value="{{ searchVal }}" shape="round" placeholder="请输入车牌号码" bind:change="onChange" bind:search="onSearch" bind:cancel="onCancel" use-action-slot>
-                <!-- <view slot="label" style="width:160rpx;margin-right: 20rpx;">
-                  <van-field label="" input-align="center" style="width: 100%;">
-                    <view slot="input" style="width: 100%;">
-                      <input name="transactionType" value='{{typeArray[typeIndex].value}}' hidden='true' />
-                      <picker bindchange="bindPickerChange" value="{{typeIndex}}" range="{{typeArray}}" range-key="name" data-pickername='type'>
-                        <view wx:if="{{typeArray[typeIndex].name}}" style="font-size: 12px;white-space: nowrap;"> {{typeArray[typeIndex].name}}</view>
-                        <view wx:else class="selectPlaceholder" style="font-size: 12px;white-space: nowrap;">{{defaultText}}</view>
-                      </picker>
-                    </view>
-                    <view slot="right-icon">
-                      <van-icon name="arrow-down" />
-                    </view>
-                  </van-field>
-                </view>
-                <van-icon slot="action" class-prefix="iconfont" name="arrow3-right_fill" size="28px" color="#4B70EA" bind:tap="toSearch" /> -->
-              </van-search>
-            </view>
-          </view>
-          <!-- 导航 -->
-          <!-- <van-tabs active="{{ setIndex }}" ellipsis="{{ false }}" color="#4B70EA" border="{{ fasle }}" bind:click='clickScroll'>
-            <block wx:for="{{ applyData }}" wx:key="index">
-              <van-tab title="{{ item.label }}"></van-tab>
-            </block>
-          </van-tabs> -->
-          <!-- <view class="filterStatus">
-        <view class="first {{registStatus==''?'active':''}}" data-status="" bindtap="statusFun">全部</view>
-        <view class="{{registStatus=='1'?'active':''}}" data-status="1" bindtap="statusFun">待入场 <van-tag round wx:if="{{registStatusdrc>0}}" type="danger">{{registStatusdrc}}</van-tag></view>
-        <view class="{{registStatus=='3'?'active':''}}" data-status="3" bindtap="statusFun">过磅中 <van-tag round wx:if="{{registStatusgbz>0}}" type="danger">{{registStatusgbz}}</van-tag></view>
-        <view class="{{registStatus=='7'?'active':''}}" data-status="7" bindtap="statusFun">已出场 <van-tag round wx:if="{{registStatusycc>0}}" type="danger">{{registStatusycc}}</van-tag></view>
-      </view> -->
-          <view class="filterStatus">
-            <view class="first {{appointmentType==''?'active':''}}" data-type="" bindtap="typeFun">全部预约</view>
-            <view class="{{appointmentType=='1'?'active':''}}" data-type="1" bindtap="typeFun">砂石<van-tag round wx:if="{{appointmentTypeSha>0}}" type="danger">{{appointmentTypeSha}}</van-tag></view>
-            <view class="{{appointmentType=='3'?'active':''}}" data-type="3" bindtap="typeFun">起卸<van-tag round wx:if="{{appointmentTypeQi>0}}" type="danger">{{appointmentTypeQi}}</van-tag></view>
-            <view class="{{appointmentType=='4'?'active':''}}" data-type="4" bindtap="typeFun">充电桩<van-tag round wx:if="{{appointmentTypeGuan>0}}" type="danger">{{appointmentTypeGuan}}</van-tag></view>
-            <view class="{{appointmentType=='5'?'active':''}}" data-type="5" bindtap="typeFun">管桩<van-tag round wx:if="{{appointmentTypeChong>0}}" type="danger">{{appointmentTypeChong}}</van-tag></view>
-            <view class="{{appointmentType=='6'?'active':''}}" data-type="6" bindtap="typeFun">其他<van-tag round wx:if="{{appointmentTypeOther>0}}" type="danger">{{appointmentTypeOther}}</van-tag></view>
+    <van-sticky>
+      <view class="topFilter">
+        <view class="topSeach">
+          <view class="rightBox" style="position: relative;">
+            <van-search value="{{ searchVal }}" shape="round" placeholder="请输入车牌号码" bind:change="onChange" bind:search="onSearch" bind:cancel="onCancel" use-action-slot>
+              <!-- <view slot="label" style="width:160rpx;margin-right: 20rpx;">
+                <van-field label="" input-align="center" style="width: 100%;">
+                  <view slot="input" style="width: 100%;">
+                    <input name="transactionType" value='{{typeArray[typeIndex].value}}' hidden='true' />
+                    <picker bindchange="bindPickerChange" value="{{typeIndex}}" range="{{typeArray}}" range-key="name" data-pickername='type'>
+                      <view wx:if="{{typeArray[typeIndex].name}}" style="font-size: 12px;white-space: nowrap;"> {{typeArray[typeIndex].name}}</view>
+                      <view wx:else class="selectPlaceholder" style="font-size: 12px;white-space: nowrap;">{{defaultText}}</view>
+                    </picker>
+                  </view>
+                  <view slot="right-icon">
+                    <van-icon name="arrow-down" />
+                  </view>
+                </van-field>
+              </view>
+              <van-icon slot="action" class-prefix="iconfont" name="arrow3-right_fill" size="28px" color="#4B70EA" bind:tap="toSearch" /> -->
+            </van-search>
           </view>
         </view>
-      </van-sticky>
+        <!-- 导航 -->
+        <!-- <van-tabs active="{{ setIndex }}" ellipsis="{{ false }}" color="#4B70EA" border="{{ fasle }}" bind:click='clickScroll'>
+          <block wx:for="{{ applyData }}" wx:key="index">
+            <van-tab title="{{ item.label }}"></van-tab>
+          </block>
+        </van-tabs> -->
+        <!-- <view class="filterStatus">
+      <view class="first {{registStatus==''?'active':''}}" data-status="" bindtap="statusFun">全部</view>
+      <view class="{{registStatus=='1'?'active':''}}" data-status="1" bindtap="statusFun">待入场 <van-tag round wx:if="{{registStatusdrc>0}}" type="danger">{{registStatusdrc}}</van-tag></view>
+      <view class="{{registStatus=='3'?'active':''}}" data-status="3" bindtap="statusFun">过磅中 <van-tag round wx:if="{{registStatusgbz>0}}" type="danger">{{registStatusgbz}}</van-tag></view>
+      <view class="{{registStatus=='7'?'active':''}}" data-status="7" bindtap="statusFun">已出场 <van-tag round wx:if="{{registStatusycc>0}}" type="danger">{{registStatusycc}}</van-tag></view>
+    </view> -->
+        <view class="filterStatus">
+          <view class="first {{appointmentType==''?'active':''}}" data-type="" bindtap="typeFun">全部预约</view>
+          <view class="{{appointmentType=='1'?'active':''}}" data-type="1" bindtap="typeFun">砂石<van-tag round wx:if="{{appointmentTypeSha>0}}" type="danger">{{appointmentTypeSha}}</van-tag></view>
+          <view class="{{appointmentType=='3'?'active':''}}" data-type="3" bindtap="typeFun">起卸<van-tag round wx:if="{{appointmentTypeQi>0}}" type="danger">{{appointmentTypeQi}}</van-tag></view>
+          <view class="{{appointmentType=='4'?'active':''}}" data-type="4" bindtap="typeFun">充电桩<van-tag round wx:if="{{appointmentTypeGuan>0}}" type="danger">{{appointmentTypeGuan}}</van-tag></view>
+          <view class="{{appointmentType=='5'?'active':''}}" data-type="5" bindtap="typeFun">管桩<van-tag round wx:if="{{appointmentTypeChong>0}}" type="danger">{{appointmentTypeChong}}</van-tag></view>
+          <view class="{{appointmentType=='6'?'active':''}}" data-type="6" bindtap="typeFun">其他<van-tag round wx:if="{{appointmentTypeOther>0}}" type="danger">{{appointmentTypeOther}}</van-tag></view>
+        </view>
+      </view>
+    </van-sticky>
 
-      <view class="width710">
-        <block wx:if="{{!requestStatu}}">
-          <block wx:if="{{resData.length>0}}">
-            <block wx:for="{{resData}}" wx:key="index">
-              <navigator url="info?id={{item.id}}&name={{item.name}}&account={{item.account}}&index={{index}}" class="listItem">
+    <view class="width710">
+      <block wx:if="{{!requestStatu}}">
+        <block wx:if="{{resData.length>0}}">
+          <block wx:for="{{resData}}" wx:key="index">
+            <navigator url="info?id={{item.id}}&name={{item.name}}&account={{item.account}}&index={{index}}" class="listItem">
+              
+              <view class="title van-ellipsis">
+                <van-icon class='iconfont' name='/images/licensePlate.png' size="36rpx"></van-icon><text>{{item.licenseNumber}}</text><!--<text class="queueNumber">排队号:{{item.queueNumber}}</text>-->
+                <text wx:if="{{item.status}}" class="status status{{item.status}}">{{item.statusName}}</text>
+              </view>
+              <view class="info" wx:if="{{ item.appointmentType =='1' }}">
+                <text>订单编号:{{item.orderNumber?item.orderNumber:'未填写'}}</text>
+              </view>
+              <view class="info" wx:if="{{ item.appointmentType =='3' }}">
+                <text>起卸预约单号:{{item.loadNumber?item.loadNumber:'未填写'}}</text>
+              </view>
+              <view class="info" wx:if="{{ item.appointmentType =='5' }}">
+                <text>计划单号:{{item.planNumber?item.planNumber:'未填写'}}</text>
+              </view>
+              <view class="info" wx:if="{{ item.appointmentType =='5' }}">
+                <text>开始时间:{{item.beginTime?item.beginTime:'未填写'}}</text>
+              </view>
+              <view class="info" wx:if="{{ item.appointmentType =='5' }}">
+                <text>结束时间:{{item.endTime?item.endTime:'未填写'}}</text>
+              </view>
+              <view class="info">
+                <text decode="{{true}}">司{{str+str}}机:{{item.driverName?item.driverName:'未填写'}} {{item.driverMobile?item.driverMobile:'司机电话'}}</text>
+              </view>
+              <view class="time" wx:if="{{ item.appointmentType =='1' }}">
+                <text>提货时间:{{item.beginTime?filters.tosubStr(item.beginTime,0,16):'提货开始时间'}} 至 {{item.endTime?filters.tosubStr(item.endTime,0,16):'提货结束时间'}}</text>
+              </view>
+              <view class="time">
+                <text>预约类型:{{ filters.codeAnalysis(appointmentTypeArray, item.appointmentType, 'dictValue', 'dictLabel') }}</text>
+              </view>
+              
+              <view class="bottomBtn" wx:if="{{ item.status == '1' || item.status == '4'|| item.status == '5' || item.status == '6' || item.status == '7' || item.status == '8' || (item.appointmentType == '6' && (item.status == '2' || item.status == '4')) }} ">
+                <van-button type="info" size="small" data-id="{{item.id}}" data-index="{{ index }}" catchtap="toUpdate" wx:if="{{ item.appointmentType == '6' && (item.status == '2' || item.status == '4') }}" style="margin-right: 20rpx;">修改</van-button>
+                <van-button type="danger" size="small" data-id="{{item.id}}" data-license-number="{{item.licenseNumber}}" catchtap="delFun" wx:if="{{ item.appointmentType == '6' && item.status == '2' }}">删除</van-button>
                 
-                <view class="title van-ellipsis">
-                  <van-icon class='iconfont' name='/images/licensePlate.png' size="36rpx"></van-icon><text>{{item.licenseNumber}}</text><!--<text class="queueNumber">排队号:{{item.queueNumber}}</text>-->
-                  <text wx:if="{{item.status}}" class="status status{{item.status}}">{{item.statusName}}</text>
-                </view>
-                <view class="info" wx:if="{{ item.appointmentType =='1' }}">
-                  <text>订单编号:{{item.orderNumber?item.orderNumber:'未填写'}}</text>
-                </view>
-                <view class="info" wx:if="{{ item.appointmentType =='3' }}">
-                  <text>起卸预约单号:{{item.loadNumber?item.loadNumber:'未填写'}}</text>
-                </view>
-                <view class="info" wx:if="{{ item.appointmentType =='5' }}">
-                  <text>计划单号:{{item.planNumber?item.planNumber:'未填写'}}</text>
-                </view>
-                <view class="info" wx:if="{{ item.appointmentType =='5' }}">
-                  <text>开始时间:{{item.beginTime?item.beginTime:'未填写'}}</text>
-                </view>
-                <view class="info" wx:if="{{ item.appointmentType =='5' }}">
-                  <text>结束时间:{{item.endTime?item.endTime:'未填写'}}</text>
-                </view>
-                <view class="info">
-                  <text decode="{{true}}">司{{str+str}}机:{{item.driverName?item.driverName:'未填写'}} {{item.driverMobile?item.driverMobile:'司机电话'}}</text>
-                </view>
-                <view class="time" wx:if="{{ item.appointmentType =='1' }}">
-                  <text>提货时间:{{item.beginTime?filters.tosubStr(item.beginTime,0,16):'提货开始时间'}} 至 {{item.endTime?filters.tosubStr(item.endTime,0,16):'提货结束时间'}}</text>
-                </view>
-                <view class="time">
-                  <text>预约类型:{{ filters.codeAnalysis(appointmentTypeArray,item.appointmentType, 'dictValue', 'dictLabel') }}</text>
-                </view>
+                <van-button type="info" size="small" data-id="{{item.id}}" data-type="{{item.appointmentType}}" data-approve-type="one" catchtap="showPopup" style="margin-right: 20rpx;" wx:if="{{ item.status == '1' }}">审核</van-button>
+                <van-button type="warning" size="small" data-id="{{item.id}}" data-license-number="{{item.licenseNumber}}" catchtap="cancelFun" wx:if="{{ item.status == '4' }}" style="margin-right: 20rpx;">取消预约</van-button>
                 
-                <view class="bottomBtn" wx:if="{{ item.status == '1' || item.status == '4'|| item.status == '5' || item.status == '6' || item.status == '7' || item.status == '8' }}">
-                  <van-button type="info" size="small" data-id="{{item.id}}" data-type="{{item.appointmentType}}" data-approve-type="one" catchtap="showPopup" style="margin-right: 20rpx;" wx:if="{{ item.status == '1' }}">审核</van-button>
-                  <van-button type="warning" size="small" data-id="{{item.id}}" data-license-number="{{item.licenseNumber}}" catchtap="cancelFun" wx:if="{{ item.status == '4' }}" style="margin-right: 20rpx;">取消预约</van-button>
-                  
-                  <van-button type="primary" size="small" data-id="{{item.id}}" data-license-number="{{item.licenseNumber}}" catchtap="exitFun" wx:if="{{ item.appointmentType == '6'  && (item.status=='5' || item.status=='6' || item.status=='7' || item.status=='8' || item.status=='9' || item.status=='16' || item.status=='17') }}" style="margin-right: 20rpx;">授权离场</van-button>
+                <van-button type="primary" size="small" data-id="{{item.id}}" data-license-number="{{item.licenseNumber}}" catchtap="exitFun" wx:if="{{ item.appointmentType == '6'  && (item.status=='5' || item.status=='6' || item.status=='7' || item.status=='8' || item.status=='9' || item.status=='16' || item.status=='17') }}" style="margin-right: 20rpx;">授权离场</van-button>
 
-                  <van-button type="danger" size="small" data-id="{{item.id}}" data-license-number="{{item.licenseNumber}}" catchtap="overFun" wx:if="{{ item.appointmentType != '6'  && (item.status == '5' || item.status == '6' || item.status == '7' || item.status == '8') }}" style="margin-right: 20rpx;">强制结束</van-button>
-                </view>
-              </navigator>
-            </block>
-            <!-- 底部加载动画 -->
-            <view class='more'>
-              <block wx:if="{{more}}">
-                <van-loading size="24px" color="#1989fa">加载中...</van-loading>
-              </block>
-              <block wx:else>{{nomore}}</block>
-            </view>
-            <view style="height: 180rpx;"> </view>
-          </block>
-          <block wx:else>
-            <van-empty description="未搜索到预约记录" image="/images/null1.png" />
+                <van-button type="danger" size="small" data-id="{{item.id}}" data-license-number="{{item.licenseNumber}}" catchtap="overFun" wx:if="{{ item.appointmentType != '6'  && (item.status == '5' || item.status == '6' || item.status == '7' || item.status == '8') }}" style="margin-right: 20rpx;">强制结束</van-button>
+              </view>
+            </navigator>
           </block>
-        </block>
-      </view>
-    </block>
-    <block wx:else>
-      <view>
-        <van-empty image="/images/loginNull.png">
-          <view slot="description" style="text-align: center;">
-            <text style="display:block;margin-bottom: 20rpx;">您还未登录,登录后查看更多~</text>
-            <van-button type="info" bindtap="toLogin">立即登录</van-button>
+          <!-- 底部加载动画 -->
+          <view class='more'>
+            <block wx:if="{{more}}">
+              <van-loading size="24px" color="#1989fa">加载中...</van-loading>
+            </block>
+            <block wx:else>{{nomore}}</block>
           </view>
-        </van-empty>
-      </view>
-    </block>
+          <view style="height: 180rpx;"> </view>
+        </block>
+        <block wx:else>
+          <van-empty description="未搜索到预约记录" image="/images/null1.png" />
+        </block>
+      </block>
+    </view>
+  </block>
+  <block wx:else>
+    <view>
+      <van-empty image="/images/loginNull.png">
+        <view slot="description" style="text-align: center;">
+          <text style="display:block;margin-bottom: 20rpx;">您还未登录,登录后查看更多~</text>
+          <van-button type="info" bindtap="toLogin">立即登录</van-button>
+        </view>
+      </van-empty>
+    </view>
+  </block>
 </view>
 
 <!-- 弹窗 -->

+ 19 - 0
pages/reservationMan/info.js

@@ -13,12 +13,31 @@ Page({
     ], //预约类型
     info: {},
     fileList:[], //司机回签图片
+
+    appointmentTypeArray: [{
+      dictValue: "",
+      dictLabel: "全部状态"
+    }],
+    appointmentTypeIndex: 0,
   },
 
   /**
    * 生命周期函数--监听页面加载
    */
   onLoad(options) {
+    //订单类型
+    let treeData = app.globalData.treeArr
+    for (const element of treeData) {
+      let arrStr;
+      switch (element.dictValue) {
+        case 'appointment_type':
+          arrStr = "appointmentTypeArray";
+          break;
+      }
+      this.setData({
+        [arrStr]: element.children
+      })
+    }
     //获取详情
     var pages = getCurrentPages();
     var prevPage = pages[pages.length - 2];

+ 56 - 8
pages/reservationMan/info.wxml

@@ -5,11 +5,15 @@
     <van-field label="预约状态" input-align="right" readonly>
       <text slot="button" class="status status{{info.status}}">{{ info.statusName }}</text>
     </van-field>
+    <van-field label="预约类型" input-align="right" readonly >
+      <text slot="button" class="status status{{info.appointmentType}}">{{ filters.codeAnalysis(appointmentTypeArray, info.appointmentType, 'dictValue', 'dictLabel') }}</text>
+    </van-field>   
+    <!-- <van-field label="预约分类" input-align="right" readonly  wx:if="{{ info.appointmentType == '2' }}">
+      <text slot="button" class="status status{{info.appointmentClassify}}">{{ filters.codeAnalysis(appointmentClassifyArray,info.appointmentClassify, 'value', 'label') }}</text>
+    </van-field> -->
     <van-field label="司机姓名" input-align="right" model:value="{{info.driverName}}" readonly></van-field>
     <van-field label="司机电话" input-align="right" model:value="{{info.driverMobile}}" readonly></van-field>
-    <van-field label="预约分类" input-align="right" readonly wx:if="{{ info.appointmentType == '2' }}">
-      <text slot="button" class="status status{{info.appointmentClassify}}">{{ filters.codeAnalysis(appointmentClassifyArray,info.appointmentClassify, 'value', 'label') }}</text>
-    </van-field>
+
     <block wx:if="{{ info.appointmentType == '1' }}">
       <van-field label="订单编号" input-align="right" model:value="{{info.orderNumber}}" readonly></van-field>
       <van-field label="订单名称" input-align="right" model:value="{{info.orderName}}" readonly></van-field>
@@ -20,14 +24,48 @@
       <van-field label="提货结束时间" input-align="right" model:value="{{info.endTime}}" readonly></van-field>
     </block>
 
-    <van-field label="审核备注" input-align="right" model:value="{{info.appointmentReason}}" readonly></van-field>
-
+    <!-- 砂石预约 -->
     <block wx:if="{{ info.appointmentType == '1' }}">
+      <van-field label="客户名称" input-align="right" model:value="{{info.customerName}}" readonly></van-field>
+      <van-field label="货品名称" input-align="right" model:value="{{info.goodsName}}" readonly></van-field>
+      <van-field label="货品编码" input-align="right" model:value="{{info.goodsCode}}" readonly></van-field>
+      <van-field label="提货开始时间" input-align="right" model:value="{{info.beginTime}}" readonly></van-field>
+      <van-field label="提货结束时间" input-align="right" model:value="{{info.endTime}}" readonly></van-field>
+    </block>
+
+    <!-- 砂石预约  起卸预约 -->
+    <block wx:if="{{ info.appointmentType == '1' || info.appointmentType == '3' }}">
+      <van-field label="装卸点位" input-align="right" model:value="{{info.loadPoint}}" readonly></van-field>
+      <van-field label="装卸开始时间" input-align="right" model:value="{{info.loadBeginTime}}" readonly></van-field>
+      <van-field label="装卸结束时间" input-align="right" model:value="{{info.loadEndTime}}" readonly></van-field>
+    </block>
+
+    <!-- 管桩预约 -->
+    <block wx:if="{{ info.appointmentType == '5' }}">
+      <van-field label="管桩计划单号" input-align="right" value="{{planNumber }}" readonly></van-field>
+      <van-field label="- 计划名称" input-align="right" value="{{ planName }}" readonly></van-field>
+      <van-field label="- 预约次数" input-align="right" value="{{ planCount }}" readonly></van-field>
+      <van-field label="- 已预约次数" input-align="right" value="{{ planAlreadyCount }}" readonly></van-field>
+      <van-field label="- 开始时间" input-align="right" value="{{ beginTime }}" readonly></van-field>
+      <van-field label="- 结束时间" input-align="right" value="{{ endTime }}" readonly></van-field>
+    </block>
+
+    <!-- 其他预约 -->
+    <block wx:if="{{ info.appointmentType == '6' }}">
+      <van-field label="是否过磅" input-align="right" readonly >
+        <text slot="button" class="status status{{info.isWeigh}}">{{ info.isWeigh=='1'?'是':'否' }}</text>
+      </van-field>
+      <van-field label="备注" input-align="right" value="{{ info.remark }}" readonly></van-field>
+    </block>
+
+    <van-field label="审核备注" wx:if="{{info.appointmentReason}}" input-align="right" model:value="{{info.appointmentReason}}" readonly></van-field>
+
+    <!-- 砂石预约  起卸预约  -->
+    <block wx:if="{{ info.appointmentType == '1' || info.appointmentType == '3' }}">
       <van-field center clearable label="司机确认" use-button-slot class="radioHeight fieldAutoHeight">
-        <view slot="input" class="radioHeightBx" wx:if="{{ info.driverSign }}">
-          <van-image slot="input" width="100px" height="100px" src="{{ info.driverSign }}" />
-        </view>
+        <view slot="input" class="radioHeightBx" wx:if="{{ info.driverSign }}"><van-image slot="input" width="100px" height="100px" src="{{ info.driverSign }}" /></view>
       </van-field>
+
       <van-field label="卸货重量" input-align="right" model:value="{{info.unloadWeight}}" readonly>
         <view slot="right-icon">
           <text>吨</text>
@@ -43,6 +81,16 @@
             </view>
           </van-field>
         </van-cell-group>
+        <van-field center clearable label="签收审核" use-button-slot class="radioHeight fieldAutoHeight">
+          <view slot="input" class="radioHeightBx" wx:if="{{ info.auditSign }}"><van-image slot="input" width="100px" height="100px" src="{{ info.auditSign }}" /></view>
+        </van-field>
+      </view>
+    </block>
+
+    <block wx:if="{{ info.appointmentType == '1' || info.appointmentType == '3' || (info.appointmentType == '6' && info.isWeigh == '1') }}">
+    <!-- 5已入场   7完成装货 -->
+      <view style="padding: 20px 0;" wx:if="{{ info.status == '5' || info.status == '7' }}">
+        <canvas class='canvas' canvas-id='canvas' style='width:220px;height:220px;margin: 0 auto;'></canvas>
       </view>
     </block>
 

+ 15 - 0
pages/reservationPipe/add.js

@@ -37,6 +37,21 @@ Page({
    * 生命周期函数--监听页面加载
    */
   onLoad: function (options) {
+    // 根据缓存获取司机车牌号
+    let getCarNumArr = wx.getStorageSync('nickname')?wx.getStorageSync('nickname').split(''):''
+    let inputPlates = {};
+    for (let i = 0; i < getCarNumArr.length; i++) {
+      inputPlates['index' + i] = getCarNumArr[i]
+    }
+    // 默认填充司机信息
+    this.setData({
+      driverId    : wx.getStorageSync('id'),
+      driverName  : wx.getStorageSync('name'),
+      driverPhone : wx.getStorageSync('phone'),
+      inputPlates : inputPlates,
+      isNewEnergy : getCarNumArr.length > 7 ? true : false,
+      licensePlate: wx.getStorageSync('nickname')
+    })
     this.setData({
       orderId: options.orderId
     })

+ 70 - 0
pages/salesOrderMan/index.js

@@ -536,6 +536,76 @@ Page({
 
   
 
+  //客户驳回
+  rejectFun: function (e) {
+    let _this = this
+    let { id, orderNumber } = e.currentTarget.dataset
+    wx.showModal({
+      title: '提示!',
+      content: `物流订单号【${orderNumber}】,确定驳回该订单吗?`,
+      confirmColor: '#FF5B5B',
+      success: function (res) {
+        if (res.confirm) {
+          app.request.POST({
+            url: app.API.rejectOrder,
+            params: {
+              id: id
+            },
+            page: _this,
+            isLoadingTxt: '确认中...',
+            successFun: true
+          }).then(res => {
+            wx.showToast({
+              title: '确认成功',
+              icon: 'success',
+              duration: 1000,
+              mask: true
+            })
+            _this.getListFun(); //刷新列表
+          })
+        } else if (res.cancel) {
+
+        }
+      }
+    })
+  },
+
+  //管理员发货确认
+  sendConfirmFun: function (e) {
+    let _this = this
+    let { id, orderNumber } = e.currentTarget.dataset
+    wx.showModal({
+      title: '提示!',
+      content: `物流订单号【${orderNumber}】,确定现在进行发货确认吗?`,
+      confirmColor: '#FF5B5B',
+      success: function (res) {
+        if (res.confirm) {
+          app.request.POST({
+            url: app.API.sendConfirmOrder,
+            params: {
+              id: id
+            },
+            page: _this,
+            isLoadingTxt: '确认中...',
+            successFun: true
+          }).then(res => {
+            wx.showToast({
+              title: '确认成功',
+              icon: 'success',
+              duration: 1000,
+              mask: true
+            })
+            _this.getListFun(); //刷新列表
+          })
+        } else if (res.cancel) {
+
+        }
+      }
+    })
+  },
+
+  
+
   /**
    * 生命周期函数--监听页面隐藏
    */

+ 15 - 1
pages/salesOrderMan/index.wxml

@@ -47,13 +47,21 @@
                   <text>订单编号:{{item.orderNumber?item.orderNumber:'未填写'}}</text>
                 </view>
               <view class="time"><text>提货时间:{{item.confStartTime?filters.tosubStr(item.confStartTime,0,16):''}} 至 {{item.confEndTime?filters.tosubStr(item.confEndTime,0,16):''}}</text></view>
-              <view class="bottomBtn" wx:if="{{ ( roleCodeList == 'sale' && item.orderStatus == '0') || ((roleCodeList == 'customer' || roleCodeList == 'bizAdmin' ) && item.orderStatus == '1') || (roleCodeList == 'sale' && item.orderStatus == '2') || (roleCodeList == 'sale' && (item.orderStatus == '3' || item.orderStatus == '4')) || (roleCodeList == 'bizAdmin' && item.orderStatus == '5') || (roleCodeList == 'dispatcher' && (item.orderStatus == '3' || item.orderStatus == '4' || item.orderStatus == '8'))}}">
+              
+              <view class="bottomBtn" wx:if="{{ ( roleCodeList == 'sale' && item.orderStatus == '0') || ((roleCodeList == 'customer' || roleCodeList == 'bizAdmin' ) && item.orderStatus == '1') || (roleCodeList == 'sale' && item.orderStatus == '2') || (roleCodeList == 'sale' && (item.orderStatus == '3' || item.orderStatus == '4')) || (roleCodeList == 'bizAdmin' && item.orderStatus == '5') || (roleCodeList == 'dispatcher' && (item.orderStatus == '3' || item.orderStatus == '4' || item.orderStatus == '8')) || (roleCodeList == 'customer' && item.orderStatus == '10') || (roleCodeList == 'sale' && item.orderStatus == '11') }}">
+                
                 <van-button type="info" size="small" data-url="edit?index={{index}}" catchtap="toLink" style="margin-right: 20rpx;" wx:if="{{roleCodeList == 'sale' && item.orderStatus == '0'}}">修改</van-button>
+                
                 <van-button type="danger" size="small" data-id="{{item.id}}" data-order-number="{{item.orderNumber}}" catchtap="delFun" style="margin-right: 20rpx;" wx:if="{{roleCodeList == 'sale' && item.orderStatus == '0'}}">删除</van-button>
+                
                 <van-button type="primary" size="small" data-id="{{item.id}}" data-order-number="{{item.orderNumber}}" catchtap="orderSubmit" wx:if="{{roleCodeList == 'sale' && item.orderStatus == '0'}}">提交</van-button>
+                
                 <van-button type="warning" size="small" data-url="/pages/sign/index?id={{item.id}}" catchtap="toLink" wx:if="{{(roleCodeList == 'customer' || roleCodeList == 'bizAdmin' ) && item.orderStatus == '1'}}">签字确认</van-button>
+                
                 <van-button type="primary" size="small" data-id="{{item.id}}" data-order-number="{{item.orderNumber}}" catchtap="comform" wx:if="{{roleCodeList == 'sale' && item.orderStatus == '2'}}">订单确认</van-button>
+                
                 <van-button type="danger" size="small" data-id="{{item.id}}" data-order-number="{{item.orderNumber}}" catchtap="endFun" wx:if="{{roleCodeList == 'sale' && (item.orderStatus == '3' || item.orderStatus == '4')}}">结束</van-button>
+                
                 <van-button type="primary" size="small" data-id="{{item.id}}" data-approve-type="one" catchtap="showPopup" wx:if="{{roleCodeList == 'bizAdmin' && item.orderStatus == '5'}}">审核</van-button>
 
                 <van-button type="primary" size="small" data-url="orderloadAdd?orderId={{item.id}}&deliveryTimeId={{item.deliveryTimeId}}&orderNumber={{item.orderNumber}}&confStartTime={{item.confStartTime}}&confEndTime={{item.confEndTime}}" catchtap="toLink" wx:if="{{roleCodeList == 'dispatcher' && (item.orderStatus == '3' || item.orderStatus == '4' || item.orderStatus == '8')}}" custom-style="margin-right:30rpx;">调度</van-button>
@@ -65,6 +73,12 @@
                           data-conf-end-time="{{item.confEndTime}}" 
                 catchtap="orderLoadShow" wx:if="{{roleCodeList == 'dispatcher' && (item.orderStatus == '3' || item.orderStatus == '4' || item.orderStatus == '8')}}">调度列表</van-button>
 
+                <van-button type="warning" size="small" data-url="endSign?id={{item.id}}" catchtap="toLink" wx:if="{{ roleCodeList == 'customer' && item.orderStatus == '10' }}" custom-style="margin-right:30rpx;">客户手签</van-button>
+
+                <van-button type="danger" size="small" data-id="{{item.id}}" data-order-number="{{item.orderNumber}}" wx:if="{{ roleCodeList == 'customer' && item.orderStatus == '10' }}" catchtap="rejectFun">驳回</van-button>
+
+                <van-button type="primary" size="small" data-id="{{item.id}}" data-order-number="{{item.orderNumber}}" wx:if="{{ roleCodeList == 'sale' && item.orderStatus == '11' }}" catchtap="sendConfirmFun">发货确认</van-button>
+
               </view>
             </navigator>
           </block>

+ 6 - 5
pages/workstand/index.js

@@ -7,25 +7,26 @@ Page({
   data: {
     loginStatus: wx.getStorageSync('loginStatus') ? wx.getStorageSync('loginStatus') : false,
     roleCodeList: wx.getStorageSync('roleCodeList') ? wx.getStorageSync('roleCodeList') : '',
-    //"bizAdmin"管理员, "driver"司机, "customer"用友客户, "ship"船主, "sale"销售, "dispatcher"调度员, "send"发货员, "load"起卸员
+    //"bizAdmin"管理员, "driver"司机, "customer"用友客户, "ship"船主, "sale"销售, "dispatcher"调度员, "send"发货员, "load"起卸员  "serviceCustomer"服务客户
     menuData:[
       {url:'/pages/index/index',flowName:'扫码预约',flowIcon:'',iconfont:'yuyue',color:"#00a8ff",role:["driver","customer"]},
 
       {url:'/pages/reservationMan/index',flowName:'预约管理',flowIcon:'',iconfont:'yuyueguanli2',color:"#FF6160",role:["bizAdmin"]},
 
-      {url:'/otherPages/loadArrive/index',flowName:'报港预约',flowIcon:'',iconfont:'loadArrive',color:"#20A0E3",role:["ship", "bizAdmin"]},
-
       {url:'/pages/weighingRecord/index',flowName:'过磅记录',flowIcon:'',iconfont:'xuexijilu-',color:"#26CA83",role:["bizAdmin","driver"]},
 
       {url:'/pages/queueCar/index',flowName:'排队车辆',flowIcon:'',iconfont:'item5',color:"#6c5ce7",role:["bizAdmin"]},
 
       {url:'/pages/salesOrderMan/index',flowName:'物流订单',flowIcon:'',iconfont:'xiaoshouguanli3',color:"#20A0E3",role:["bizAdmin","sale","customer","dispatcher"]},
-      
-      {url:'/otherPages/loadAppoint/index',flowName:'起卸订单',flowIcon:'',iconfont:'loadAppoint',color:"#6c5ce7",role:["load","bizAdmin", "dispatcher"]},
+
+      {url:'/otherPages/loadAppoint/index',flowName:'起卸订单',flowIcon:'',iconfont:'loadAppoint',color:"#6c5ce7",role:["load","bizAdmin", "dispatcher", "serviceCustomer"]},
+
+      {url:'/otherPages/loadArrive/index',flowName:'报港预约',flowIcon:'',iconfont:'loadArrive',color:"#20A0E3",role:["ship", "bizAdmin"]},
 
       {url:'/pages/deliveryConfirm/index',flowName:'发货确认',flowIcon:'',iconfont:'daifahuo1',color:"#FF9237",role:["send"]},
 
       {url:'/pages/signReview/index',flowName:'签收审核',flowIcon:'',iconfont:'qianshou',color:"#e17055",role:["sale"]},
+      
 
       // {url:'/pages/reservationPipe/index',flowName:'管桩预约',flowIcon:'',iconfont:'reservationPipe',color:"#20A0E3",role:["driver", "bizAdmin"]},
       

+ 12 - 4
utils/api.js

@@ -28,6 +28,10 @@ const api = {
   'bizorderPage':'/biz/bizorder/getList',//物流订单列表
   'queryByOrderId':'/biz/goodsConf/queryByOrderId',//根据物流订单查询提货时间
 
+  'endSignOrder':'/biz/bizorder/endOrderSign',//订单结束客户签名
+  'rejectOrder':'/biz/bizorder/rejectOrder',//客户驳回
+  'sendConfirmOrder':'/biz/bizorder/sendConfirm',//发货确认
+
   //司机
   //扫码预约
   'orderAllList':'/biz/bizorder/getList',//订单下拉列表
@@ -74,9 +78,9 @@ const api = {
 
   // 其他预约
   'otherPage': '/biz/bizchargestationreservation/page', // GET 充电桩预约_分页列表
-  'otherAdd': '/biz/bizchargestationreservation/addChargeStationReservation', // POST 充电桩预约_新增
-  'otherEdit': '/biz/bizchargestationreservation/editChargeStationReservation', // POST 充电桩预约_编辑
-  'otherDelete': '/biz/bizchargestationreservation/deleteChargeStationReservation', // POST 充电桩预约_删除
+  'otherAdd': '/biz/bizotherappointment/addOtherAppointment', // POST 充电桩预约_新增
+  'otherEdit': '/biz/bizotherappointment/editOtherAppointment', // POST 充电桩预约_编辑
+  'otherDelete': '/biz/bizotherappointment/deleteOtherAppointment', // POST 充电桩预约_删除
   'otherExit': '/biz/bizotherappointment/bizOtherAppointmentExit', // POST 强制结束
   'otherAuthorize': '/biz/bizotherappointment/bizOtherAppointmentAuthorize', // POST 授权离场
   
@@ -118,7 +122,7 @@ const api = {
   'bizparkconfigEdit':'/biz/bizparkconfig/edit',//编辑
   'bizparkconfigDelete':'/biz/bizorderload/delete',//删除
 
-  //起卸预约
+  //起卸订单
   'bizloadappointPage':'/biz/bizloadappoint/page',//分页列表
   'bizloadappointList':'/biz/bizloadappoint/getList',//列表
   'bizloadappointDetail':'/biz/bizloadappoint/detail',//详情
@@ -127,6 +131,10 @@ const api = {
   'endLoad' : '/biz/bizloadappoint/endLoad', //结束订单
   'fillLoad' : '/biz/bizloadappoint/fillLoad', //填报订单
   
+  'endSignCustomerLoad' : '/biz/bizloadappoint/endCustomerSign', //起卸订单结束客户手签  状态为8
+  'rejectOrderLoad' : '/biz/bizloadappoint/rejectOrder', //客户驳回  状态为8
+  'sendConfirmLoad' : '/biz/bizloadappoint/sendConfirmLoad', //发货确认  状态为12
+  
   'bizloaddispatchPage':'/biz/bizloaddispatch/getPageList',//获取起卸调度-分页列表   起卸调度loadType=1   装载车loadType=2
   
   'appointAdd':'/biz/bizloaddispatch/addLoad',//起卸添加