shasha vor 1 Tag
Ursprung
Commit
6ef9fb2d36
42 geänderte Dateien mit 1231 neuen und 678 gelöschten Zeilen
  1. 0 66
      otherPages/chargestation/add.js
  2. 0 2
      otherPages/chargestation/add.wxml
  3. 0 66
      otherPages/chargestation/edit.js
  4. 0 2
      otherPages/chargestation/edit.wxml
  5. 0 66
      otherPages/chargestation/index.js
  6. 0 2
      otherPages/chargestation/index.wxml
  7. 0 66
      otherPages/chargestation/info.js
  8. 0 2
      otherPages/chargestation/info.wxml
  9. 1 1
      otherPages/loadAppoint/allocation.js
  10. 3 3
      otherPages/loadAppoint/allocation.wxml
  11. 2 2
      otherPages/loadAppoint/dispatch.wxml
  12. 3 3
      otherPages/loadAppoint/info.wxml
  13. 1 2
      otherPages/loadArrive/index.wxml
  14. 1 1
      otherPages/loadArrive/info.wxml
  15. 0 66
      otherPages/pipeAppoint/add.js
  16. 0 2
      otherPages/pipeAppoint/add.wxml
  17. 0 66
      otherPages/pipeAppoint/edit.js
  18. 0 2
      otherPages/pipeAppoint/edit.wxml
  19. 0 66
      otherPages/pipeAppoint/index.js
  20. 0 2
      otherPages/pipeAppoint/index.wxml
  21. 0 66
      otherPages/pipeAppoint/info.js
  22. 0 2
      otherPages/pipeAppoint/info.wxml
  23. 100 10
      pages/index/index.js
  24. 58 11
      pages/index/index.wxml
  25. 2 0
      pages/index/info.js
  26. 17 5
      pages/index/info.wxml
  27. 187 0
      pages/reservationMan/addOther.js
  28. 18 0
      pages/reservationMan/addOther.json
  29. 53 0
      pages/reservationMan/addOther.wxml
  30. 209 0
      pages/reservationMan/addOther.wxss
  31. 204 0
      pages/reservationMan/editOther.js
  32. 20 0
      pages/reservationMan/editOther.json
  33. 1 0
      pages/reservationMan/editOther.less
  34. 41 0
      pages/reservationMan/editOther.wxml
  35. 174 65
      pages/reservationMan/index.js
  36. 31 1
      pages/reservationMan/index.less
  37. 37 8
      pages/reservationMan/index.wxml
  38. 32 2
      pages/reservationMan/index.wxss
  39. 4 4
      pages/workstand/index.js
  40. 19 12
      pages/workstand/index.wxss
  41. 10 1
      utils/api.js
  42. 3 3
      utils/iconfont.wxss

+ 0 - 66
otherPages/chargestation/add.js

@@ -1,66 +0,0 @@
-// otherPages/chargestation/add.js
-Page({
-
-  /**
-   * 页面的初始数据
-   */
-  data: {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面加载
-   */
-  onLoad(options) {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面初次渲染完成
-   */
-  onReady() {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面显示
-   */
-  onShow() {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面隐藏
-   */
-  onHide() {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面卸载
-   */
-  onUnload() {
-
-  },
-
-  /**
-   * 页面相关事件处理函数--监听用户下拉动作
-   */
-  onPullDownRefresh() {
-
-  },
-
-  /**
-   * 页面上拉触底事件的处理函数
-   */
-  onReachBottom() {
-
-  },
-
-  /**
-   * 用户点击右上角分享
-   */
-  onShareAppMessage() {
-
-  }
-})

+ 0 - 2
otherPages/chargestation/add.wxml

@@ -1,2 +0,0 @@
-<!--otherPages/chargestation/add.wxml-->
-<text>otherPages/chargestation/add.wxml</text>

+ 0 - 66
otherPages/chargestation/edit.js

@@ -1,66 +0,0 @@
-// otherPages/chargestation/edit.js
-Page({
-
-  /**
-   * 页面的初始数据
-   */
-  data: {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面加载
-   */
-  onLoad(options) {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面初次渲染完成
-   */
-  onReady() {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面显示
-   */
-  onShow() {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面隐藏
-   */
-  onHide() {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面卸载
-   */
-  onUnload() {
-
-  },
-
-  /**
-   * 页面相关事件处理函数--监听用户下拉动作
-   */
-  onPullDownRefresh() {
-
-  },
-
-  /**
-   * 页面上拉触底事件的处理函数
-   */
-  onReachBottom() {
-
-  },
-
-  /**
-   * 用户点击右上角分享
-   */
-  onShareAppMessage() {
-
-  }
-})

+ 0 - 2
otherPages/chargestation/edit.wxml

@@ -1,2 +0,0 @@
-<!--otherPages/chargestation/edit.wxml-->
-<text>otherPages/chargestation/edit.wxml</text>

+ 0 - 66
otherPages/chargestation/index.js

@@ -1,66 +0,0 @@
-// otherPages/chargestation/index.js
-Page({
-
-  /**
-   * 页面的初始数据
-   */
-  data: {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面加载
-   */
-  onLoad(options) {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面初次渲染完成
-   */
-  onReady() {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面显示
-   */
-  onShow() {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面隐藏
-   */
-  onHide() {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面卸载
-   */
-  onUnload() {
-
-  },
-
-  /**
-   * 页面相关事件处理函数--监听用户下拉动作
-   */
-  onPullDownRefresh() {
-
-  },
-
-  /**
-   * 页面上拉触底事件的处理函数
-   */
-  onReachBottom() {
-
-  },
-
-  /**
-   * 用户点击右上角分享
-   */
-  onShareAppMessage() {
-
-  }
-})

+ 0 - 2
otherPages/chargestation/index.wxml

@@ -1,2 +0,0 @@
-<!--otherPages/chargestation/index.wxml-->
-<text>otherPages/chargestation/index.wxml</text>

+ 0 - 66
otherPages/chargestation/info.js

@@ -1,66 +0,0 @@
-// otherPages/chargestation/info.js
-Page({
-
-  /**
-   * 页面的初始数据
-   */
-  data: {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面加载
-   */
-  onLoad(options) {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面初次渲染完成
-   */
-  onReady() {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面显示
-   */
-  onShow() {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面隐藏
-   */
-  onHide() {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面卸载
-   */
-  onUnload() {
-
-  },
-
-  /**
-   * 页面相关事件处理函数--监听用户下拉动作
-   */
-  onPullDownRefresh() {
-
-  },
-
-  /**
-   * 页面上拉触底事件的处理函数
-   */
-  onReachBottom() {
-
-  },
-
-  /**
-   * 用户点击右上角分享
-   */
-  onShareAppMessage() {
-
-  }
-})

+ 0 - 2
otherPages/chargestation/info.wxml

@@ -1,2 +0,0 @@
-<!--otherPages/chargestation/info.wxml-->
-<text>otherPages/chargestation/info.wxml</text>

+ 1 - 1
otherPages/loadAppoint/allocation.js

@@ -243,7 +243,7 @@ Page({
         successFun: true
       }).then(res => {
         wx.showToast({
-          title: value.id=='' ? '新增成功' : '更换成功',
+          title: value.id=='' ? '新增成功' : '调度成功',
           icon: 'success',
           duration: 1000,
           mask: true

+ 3 - 3
otherPages/loadAppoint/allocation.wxml

@@ -10,7 +10,7 @@
       <block wx:if="{{!requestStatu}}">
         <block wx:if="{{resData.length>0}}">
           <block wx:for="{{resData}}" wx:key="index">
-            <navigator url="info?id={{item.id}}&loadPoint={{item.loadPoint}}&index={{index}}" class="listItem">
+            <navigator url="" class="listItem">
               <view class="title van-ellipsis">
                 <van-icon class='iconfont' name='/images/menuImg1.png' size="36rpx"></van-icon>
                 <text>{{item.loadPoint}}</text>
@@ -19,8 +19,8 @@
               <view class="time"><van-icon name="clock-o" size="18"/><text> {{ item.beginTime }} ~ {{item.endTime}}</text></view>
               
               <view class="bottomBtn">
-                <van-button type="info" size="small" data-id="{{ item.id }}" data-load-point="{{ item.loadPointId }}" data-load-time="{{ item.loadTimeId }}" data-load-user="{{ item.userId }}" catchtap="showPopup" style="margin-right: 20rpx;">更换</van-button>
-                <van-button type="danger" size="small" data-id="{{item.id}}" data-load-point="{{item.loadPoint}}" catchtap="delFun">删除</van-button>
+                <van-button type="info" size="small" data-id="{{ item.id }}" data-load-point="{{ item.loadPointId }}" data-load-time="{{ item.loadTimeId }}" data-load-user="{{ item.userId }}" catchtap="showPopup" style="margin-right: 20rpx;">调度</van-button>
+                <!-- <van-button type="danger" size="small" data-id="{{item.id}}" data-load-point="{{item.loadPoint}}" catchtap="delFun">删除</van-button> -->
               </view>
             </navigator>
           </block>

+ 2 - 2
otherPages/loadAppoint/dispatch.wxml

@@ -10,7 +10,7 @@
       <block wx:if="{{!requestStatu}}">
         <block wx:if="{{resData.length>0}}">
           <block wx:for="{{resData}}" wx:key="index">
-            <navigator url="info?id={{item.id}}&loadPoint={{item.loadPoint}}&index={{index}}" class="listItem">
+            <navigator url="" class="listItem">
               <view class="title van-ellipsis">
                 <van-icon class='iconfont' name='/images/menuImg1.png' size="36rpx"></van-icon>
                 <text>{{item.loadPoint}}</text>
@@ -21,7 +21,7 @@
               
               <view class="bottomBtn">
                 <van-button type="info" size="small" data-id="{{ item.id }}" data-load-point="{{ item.loadPointId }}" data-load-time="{{ item.loadTimeId }}" catchtap="showPopup" style="margin-right: 20rpx;">更换</van-button>
-                <van-button type="danger" size="small" data-id="{{item.id}}" data-load-point="{{item.loadPoint}}" catchtap="delFun">删除</van-button>
+                <!-- <van-button type="danger" size="small" data-id="{{item.id}}" data-load-point="{{item.loadPoint}}" catchtap="delFun">删除</van-button> -->
               </view>
             </navigator>
           </block>

+ 3 - 3
otherPages/loadAppoint/info.wxml

@@ -6,9 +6,9 @@
       <text slot="button" class="status status{{info.orderType}}">{{filters.codeAnalysis(appointTypeArray, info.orderType, 'dictValue', 'dictLabel')}} </text>
     </van-field>
     <van-field label="客户名称" input-align="right" model:value="{{info.customerName }}" readonly></van-field>
-    <van-field label="联系人" input-align="right" model:value="{{info.customerContact }}" readonly></van-field>
+    <!-- <van-field label="联系人" input-align="right" model:value="{{info.customerContact }}" readonly></van-field>
     <van-field label="手机号" input-align="right" model:value="{{info.customerPhone }}" readonly></van-field>
-    <van-field label="客户地址" input-align="right" model:value="{{info.customerAddress }}" readonly></van-field>
+    <van-field label="客户地址" input-align="right" model:value="{{info.customerAddress }}" 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.orderWeight +'吨'}}" readonly></van-field>
@@ -26,7 +26,7 @@
     <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">
+    <van-field center clearable label="客户手签" placeholder="签字图片" border="{{ false }}" use-button-slot class="radioHeight fieldAutoHeight">
       <view slot="input" class="radioHeightBx" wx:if="{{ info.customerSign }}">
         <van-image slot="input" width="100px" height="100px" src="{{ info.customerSign }}" />
       </view>

+ 1 - 2
otherPages/loadArrive/index.wxml

@@ -45,8 +45,7 @@
                 <text decode="{{true}}">货品信息:{{item.goodsName?item.goodsName:'未填写'}}/{{item.goodsModel?item.goodsModel:'未填写'}}</text>
               </view>
               <view class="info"><text>船号:{{item.shipNo?item.shipNo:'未填写'}}</text><text>报港数量:{{item.arriveNumber?item.arriveNumber+' 吨':''}}</text></view>
-              <view class="info"><text>预约单号:{{ item.arriveNumber }}</text></view>
-              <view class="time"><text>到港时间:{{item.arriveTime?filters.tosubStr(item.arriveTime,0,16):''}}</text></view>
+              <view class="info"><text>到港时间:{{item.arriveTime?filters.tosubStr(item.arriveTime,0,16):''}}</text></view>
               
               <view class="bottomBtn" wx:if="{{ (roleCodeList == 'ship' && (item.status == '1' || item.status == '3')) || (roleCodeList == 'bizAdmin' && item.status == '1') || (roleCodeList == 'ship' && item.loadStatus == '8' && item.status == '2')}}">
                 <van-button type="info" size="small" data-url="edit?index={{index}}" catchtap="toLink" style="margin-right: 20rpx;" wx:if="{{roleCodeList == 'ship' && item.status == '3'}}">修改</van-button>

+ 1 - 1
otherPages/loadArrive/info.wxml

@@ -6,7 +6,7 @@
     <van-field label="客户名称" input-align="right" value="{{info.customerName}}" readonly></van-field>
     <van-field label="联系人" input-align="right" value="{{info.customerContact}}" readonly></van-field>
     <van-field label="手机号" input-align="right" value="{{info.customerPhone}}" readonly></van-field>
-    <van-field label="客户地址" input-align="right" value="{{info.customerAddress}}" readonly></van-field>
+    <!-- <van-field label="客户地址" input-align="right" value="{{info.customerAddress}}" readonly></van-field> -->
     <van-field label="货品名称" input-align="right" value="{{info.goodsName}}" readonly></van-field>
     <van-field label="货品编码" input-align="right" value="{{info.goodsCode}}" readonly></van-field>
     <van-field label="报港数量(吨)" input-align="right" value="{{info.arriveNumber}}" readonly></van-field>

+ 0 - 66
otherPages/pipeAppoint/add.js

@@ -1,66 +0,0 @@
-// otherPages/reservationPipe/add.js
-Page({
-
-  /**
-   * 页面的初始数据
-   */
-  data: {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面加载
-   */
-  onLoad(options) {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面初次渲染完成
-   */
-  onReady() {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面显示
-   */
-  onShow() {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面隐藏
-   */
-  onHide() {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面卸载
-   */
-  onUnload() {
-
-  },
-
-  /**
-   * 页面相关事件处理函数--监听用户下拉动作
-   */
-  onPullDownRefresh() {
-
-  },
-
-  /**
-   * 页面上拉触底事件的处理函数
-   */
-  onReachBottom() {
-
-  },
-
-  /**
-   * 用户点击右上角分享
-   */
-  onShareAppMessage() {
-
-  }
-})

+ 0 - 2
otherPages/pipeAppoint/add.wxml

@@ -1,2 +0,0 @@
-<!--otherPages/reservationPipe/add.wxml-->
-<text>otherPages/reservationPipe/add.wxml</text>

+ 0 - 66
otherPages/pipeAppoint/edit.js

@@ -1,66 +0,0 @@
-// otherPages/reservationPipe/edit.js
-Page({
-
-  /**
-   * 页面的初始数据
-   */
-  data: {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面加载
-   */
-  onLoad(options) {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面初次渲染完成
-   */
-  onReady() {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面显示
-   */
-  onShow() {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面隐藏
-   */
-  onHide() {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面卸载
-   */
-  onUnload() {
-
-  },
-
-  /**
-   * 页面相关事件处理函数--监听用户下拉动作
-   */
-  onPullDownRefresh() {
-
-  },
-
-  /**
-   * 页面上拉触底事件的处理函数
-   */
-  onReachBottom() {
-
-  },
-
-  /**
-   * 用户点击右上角分享
-   */
-  onShareAppMessage() {
-
-  }
-})

+ 0 - 2
otherPages/pipeAppoint/edit.wxml

@@ -1,2 +0,0 @@
-<!--otherPages/reservationPipe/edit.wxml-->
-<text>otherPages/reservationPipe/edit.wxml</text>

+ 0 - 66
otherPages/pipeAppoint/index.js

@@ -1,66 +0,0 @@
-// otherPages/reservationPipe/index.js
-Page({
-
-  /**
-   * 页面的初始数据
-   */
-  data: {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面加载
-   */
-  onLoad(options) {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面初次渲染完成
-   */
-  onReady() {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面显示
-   */
-  onShow() {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面隐藏
-   */
-  onHide() {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面卸载
-   */
-  onUnload() {
-
-  },
-
-  /**
-   * 页面相关事件处理函数--监听用户下拉动作
-   */
-  onPullDownRefresh() {
-
-  },
-
-  /**
-   * 页面上拉触底事件的处理函数
-   */
-  onReachBottom() {
-
-  },
-
-  /**
-   * 用户点击右上角分享
-   */
-  onShareAppMessage() {
-
-  }
-})

+ 0 - 2
otherPages/pipeAppoint/index.wxml

@@ -1,2 +0,0 @@
-<!--otherPages/reservationPipe/index.wxml-->
-<text>otherPages/reservationPipe/index.wxml</text>

+ 0 - 66
otherPages/pipeAppoint/info.js

@@ -1,66 +0,0 @@
-// otherPages/reservationPipe/info.js
-Page({
-
-  /**
-   * 页面的初始数据
-   */
-  data: {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面加载
-   */
-  onLoad(options) {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面初次渲染完成
-   */
-  onReady() {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面显示
-   */
-  onShow() {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面隐藏
-   */
-  onHide() {
-
-  },
-
-  /**
-   * 生命周期函数--监听页面卸载
-   */
-  onUnload() {
-
-  },
-
-  /**
-   * 页面相关事件处理函数--监听用户下拉动作
-   */
-  onPullDownRefresh() {
-
-  },
-
-  /**
-   * 页面上拉触底事件的处理函数
-   */
-  onReachBottom() {
-
-  },
-
-  /**
-   * 用户点击右上角分享
-   */
-  onShareAppMessage() {
-
-  }
-})

+ 0 - 2
otherPages/pipeAppoint/info.wxml

@@ -1,2 +0,0 @@
-<!--otherPages/reservationPipe/info.wxml-->
-<text>otherPages/reservationPipe/info.wxml</text>

+ 100 - 10
pages/index/index.js

@@ -1,5 +1,6 @@
 // pages/index/index.js
 const app = getApp()
+var QRCode = require('../../utils/weapp-qrcode.js');
 var startPoint
 Page({
   /**
@@ -57,9 +58,18 @@ Page({
     registStatusdcc: '', //显示状态数值
     registStatusycc: '', //显示状态数值
 
+    appointmentType: '', //切换显示
+    appointmentTypeSha: '', //砂石
+    appointmentTypeQi: '', //起卸
+    appointmentTypeGuan: '', //管桩
+    appointmentTypeChong: '', //充电桩
+    appointmentTypeOther: '', //其他
+
     //筛选E
     setIndex: 0,
     resData: [],
+
+    showQrcode:false, 
     
     show:false,
     auditFlag:'false'
@@ -142,10 +152,43 @@ Page({
     }).exec();
   },
 
+  
+  // 二维码弹框
+  showQrcodePopup(e) {
+    let { id, licenseNumber } = e.currentTarget.dataset
+    this.setData({
+      showQrcode : true,
+      id         : id,
+    });
+    this.makeCode(JSON.stringify({
+      "id"            : id,
+      "licenseNumber" : licenseNumber
+    }))
+  },
+  // 二维码
+  makeCode(data) {
+    var qrcode;
+    qrcode = new QRCode('canvas', {
+      text: data,
+      width: 220,
+      height: 220,
+      colorDark: "#000000",
+      colorLight: "#ffffff",
+      correctLevel: QRCode.CorrectLevel.H,
+    });
+    qrcode.makeCode(data);
+  },
+  onCloseQrcode() {
+    this.setData({
+      showQrcode : false,
+      id         : '',
+    });
+  },
+
   /**
    * 生命周期函数--监听页面初次渲染完成
    */
-  onReady: function () {
+  onReady() {
 
   },
 
@@ -380,7 +423,13 @@ Page({
   },
   statusFun: function (e) {
     this.setData({
-      registStatus: e.currentTarget.dataset.status
+      registStatus : e.currentTarget.dataset.status
+    })
+    this.getListFun()
+  },
+  typeFun: function (e) {
+    this.setData({
+      appointmentType : e.currentTarget.dataset.type
     })
     this.getListFun()
   },
@@ -402,10 +451,11 @@ Page({
       page: 1
     })
     let params = {
-      current: this.data.page,
-      size: this.data.limit,
-      status: this.data.appointmentStatusArray[this.data.appointmentStatusIndex].dictValue,
-      licenseNumber: this.data.searchVal
+      current           : this.data.page,
+      size              : this.data.limit,
+      appointmentStatus : this.data.appointmentStatusArray[this.data.appointmentStatusIndex].dictValue,
+      licenseNumber     : this.data.searchVal,
+      type              : this.data.appointmentType
     }
     app.request.pageFirst({
       url: app.API.appointmentPage,
@@ -423,14 +473,14 @@ Page({
       url: app.API.typeCount,
       page: this,
       params: {
-        dataStatus: this.data.registStatus,
+        appointmentType: this.data.appointmentType,
         searchKey: this.data.searchVal
       },
       successFun: true
     }).then(res => {
       let getCount = res.data.data
       for (let key in getCount) {
-        let setStr = 'registStatus' + key
+        let setStr = 'appointmentType' + key
         this.setData({
           [setStr]: getCount[key]
         })
@@ -474,6 +524,11 @@ Page({
           wx.navigateTo({
             url: '/pages/reservationPipe/add?orderId=' + info.id
           })
+        }else if(info.type=='6'){
+          // 其他预约
+          wx.navigateTo({
+            url: '/pages/other/add?orderId=' + info.id
+          })
         }
     
       },
@@ -555,6 +610,40 @@ Page({
     })
   },
 
+  //充电结束预约
+  overFun: 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.chargestationExit,
+            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, type } = e.currentTarget.dataset
@@ -611,6 +700,7 @@ Page({
       [e.currentTarget.dataset.radiotype]: e.detail.value
     })
   },
+
   //审核
   formSubmit: function (e) {
     let formData = e.detail.value;
@@ -727,8 +817,8 @@ Page({
       current: this.data.page,
       size: this.data.limit,
       licenseNumber: this.data.searchVal,
-      // reservationStatus: this.data.applyData[this.data.setIndex].value,
-      // reservationType: this.data.typeArray[this.data.typeIndex].code,
+      reservationStatus: this.data.applyData[this.data.setIndex].value,
+      reservationType: this.data.typeArray[this.data.typeIndex].code,
     }
     app.request.pageOther({
       url: app.API.appointmentPage,

+ 58 - 11
pages/index/index.wxml

@@ -35,11 +35,19 @@
             </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="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>
 
@@ -55,17 +63,40 @@
                 <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="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 == '2' || item.status == '4' || item.status == '8' || (item.status == '10' && item.orderType == '1') }}">
+                <view class="bottomBtn" wx:if="{{ item.status == '2' || item.status == '4' || item.status == '8' || (item.status == '10' && item.orderType == '1') || (roleCodeList=='driver' && item.appointmentType == '4' && item.status == '5') }}">
+                  <van-button type="primary" size="small" data-id="{{item.id}}" data-license-number="{{item.licenseNumber}}" catchtap="showQrcodePopup" wx:if="{{ item.appointmentType == '1' || item.appointmentType == '3' || (item.appointmentType == '6' && item.isWeigh == '1') }}" style="margin-right: 20rpx;">二维码</van-button>
+                  
                   <van-button type="info" size="small" data-index="{{ index }}" data-type="{{item.appointmentType}}" catchtap="toUpdate" wx:if="{{ 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.status == '2' }}">删除</van-button>
+
                   <van-button type="warning" size="small" data-id="{{item.id}}" data-license-number="{{item.licenseNumber}}" catchtap="cancelFun" wx:if="{{ item.status == '4' }}">取消预约</van-button>
+
+                  <van-button type="danger" size="small" data-id="{{item.id}}" data-license-number="{{item.licenseNumber}}" catchtap="overFun" wx:if="{{ roleCodeList=='driver' && item.appointmentType == '4' && item.status == '5' }}">充电结束</van-button>
+
                   <van-button data-index="{{index}}" type="info" data-url="sign?id={{item.recordId}}" catchtap="toLink" size="small" wx:if="{{ item.status == '8' }}">司机确认</van-button>
+                  
                   <van-button type="info" size="small" data-url="signFor?id={{item.recordId}}&index={{index}}" catchtap="toLink" wx:if="{{ item.status == '10' && item.orderType == '1' }}">司机回签</van-button>
                 </view>
               </navigator>
@@ -109,12 +140,27 @@
   </block>
 </view>
 
-<!-- 弹窗 -->
+<!-- 二维码  弹窗 -->
+<van-popup show="{{ showQrcode }}" position="bottom" round closeable custom-style="width:100%;padding:0rpx 30rpx 250rpx;" bind:close="onCloseQrcode">
+  <view style="height: 90rpx;line-height: 90rpx;text-align: center;">预约二维码</view>
+  <form bindsubmit="onCloseQrcode">
+    <input name="id" value='{{ id }}' hidden='true' />
+    <view class="part">
+      <canvas class='canvas' canvas-id='canvas' style='width:220px;height:220px;margin: 0 auto;'></canvas>
+    </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>
+</van-popup>
+
+
+<!-- 弹窗 
 <van-popup show="{{ show }}" position="bottom" round closeable custom-style="width:100%;padding:0rpx 30rpx 160rpx;" bind:close="onClose">
   <view style="height: 90rpx;line-height: 90rpx;text-align: center;">审核</view>
   <form bindsubmit="formSubmit">
     <view class="part">
-      <view class="height20"> </view>
       <view class="height20"> </view>
       <input name="id" value='{{id}}' hidden='true' />
       <van-field label="审核结果" name="auditFlag" value="{{ auditFlag }}" required input-align="right" class="radioHeight fieldAutoHeight">
@@ -129,7 +175,7 @@
           </radio-group>
         </view>
       </van-field>
-      <!-- <van-field label="审核备注" required="{{auditFlag=='true'}}" name="auditReason" value="{{ auditReason }}" type="textarea" input-align="right" placeholder="请输入审核备注" autosize></van-field> -->
+      <van-field label="审核备注" required="{{auditFlag=='true'}}" name="auditReason" value="{{ auditReason }}" type="textarea" input-align="right" placeholder="请输入审核备注" autosize></van-field>
     </view>
 
     <view class="submitBtn">
@@ -139,5 +185,6 @@
     </view>
   </form>
 </van-popup>
+-->
 
 <wxs module="filters" src="../../utils/filter.wxs"></wxs>

+ 2 - 0
pages/index/info.js

@@ -102,6 +102,8 @@ Page({
         planName        : getInfo.planName,
         planCount       : getInfo.planCount,
         planAlreadyCount: getInfo.planAlreadyCount,
+        beginTime       : getInfo.beginTime,
+        endTime         : getInfo.endTime,
       })
     })
   },

+ 17 - 5
pages/index/info.wxml

@@ -16,7 +16,6 @@
   <view class="part">
     <!-- 砂石预约 -->
     <block wx:if="{{ info.appointmentType == '1' }}">
-      <van-field label="订单名称" input-align="right" model:value="{{info.orderName}}" readonly></van-field>
       <van-field label="订单编号" input-align="right" model:value="{{info.orderNumber}}" readonly></van-field>
     </block>
 
@@ -39,28 +38,36 @@
       <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>
 
-    <van-field label="审核备注" input-align="right" model:value="{{info.appointmentReason}}" readonly></van-field>
+    <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>
       </van-field>
+
       <van-field label="卸货重量" input-align="right" model:value="{{info.unloadWeight}}" readonly>
         <view slot="right-icon">
           <text>吨</text>
         </view>
       </van-field>
-      <van-field label="装卸点位" input-align="right" model:value="{{info.loadPoint}}" readonly></van-field>
-      <van-field label="装卸时间" input-align="right" model:value="{{info.loadBeginTime+'~'+info.loadEndTime}}" readonly type="textarea" autosize></van-field>
 
       <view class="part">
         <van-field label="司机回签" readonly border="{{false}}"></van-field>
@@ -77,7 +84,12 @@
       </view>
     </block>
 
-    <view style="padding: 20px 0;" wx:if="{{ info.status!= '1' || info.status!= '2' || info.status!= '10' || info.status!= '11' || info.status!= '12' || info.status!= '13' || info.status!= '14' || info.status!= '15'}}"><canvas class='canvas' canvas-id='canvas' style='width:220px;height:220px;margin: 0 auto;'></canvas></view>
+    <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>
 
   </view>
   <view style="height: 50px;"></view>

+ 187 - 0
pages/reservationMan/addOther.js

@@ -0,0 +1,187 @@
+// 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 () {
+
+  }
+})

+ 18 - 0
pages/reservationMan/addOther.json

@@ -0,0 +1,18 @@
+{
+  "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"
+  }
+}

+ 53 - 0
pages/reservationMan/addOther.wxml

@@ -0,0 +1,53 @@
+<!--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>

+ 209 - 0
pages/reservationMan/addOther.wxss

@@ -0,0 +1,209 @@
+/* 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;
+}

+ 204 - 0
pages/reservationMan/editOther.js

@@ -0,0 +1,204 @@
+// 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 () {
+
+  }
+})

+ 20 - 0
pages/reservationMan/editOther.json

@@ -0,0 +1,20 @@
+{
+  "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"
+  }
+}

+ 1 - 0
pages/reservationMan/editOther.less

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

+ 41 - 0
pages/reservationMan/editOther.wxml

@@ -0,0 +1,41 @@
+<!--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>

+ 174 - 65
pages/reservationMan/index.js

@@ -9,15 +9,34 @@ Page({
     str:'&emsp;',
     loginStatus: wx.getStorageSync('loginStatus') ? wx.getStorageSync('loginStatus') : false,
     roleCodeList: wx.getStorageSync('roleCodeList') ? wx.getStorageSync('roleCodeList') : '',
-    searchVal: '',
-    type:'',//预约类型
 
+    searchVal: '', //筛选条件
+    type:'',//预约类型
     appointmentClassifyArray: [
       { label:'充电预约',value:'1' },
       { label:'管桩预约',value:'2' },
       { label:'其他预约',value:'3' },
     ], //预约类型
-    
+
+    appointmentTypeArray: [{
+      dictValue: "",
+      dictLabel: "全部状态"
+    }],
+    appointmentTypeIndex: 0,
+
+    appointmentStatusArray: [{
+      dictValue: "",
+      dictLabel: "全部状态"
+    }],
+    appointmentStatusIndex: 0,
+
+    appointmentType: '', //切换显示
+    appointmentTypeSha: '', //砂石
+    appointmentTypeQi: '', //起卸
+    appointmentTypeGuan: '', //管桩
+    appointmentTypeChong: '', //充电桩
+    appointmentTypeOther: '', //其他
+
     //分页
     limit: 10,
     requestStatu: '加载中...',
@@ -26,11 +45,15 @@ Page({
     more: false,
     nomore: '',
 
-    resData:[],
+    //筛选E
+    setIndex: 0,
+    resData: [],
 
     show:false,
     auditFlag:'false',
     appointmentReason:'',//审核备注
+    
+    showQrcode:false, 
   },
 
   /**
@@ -89,6 +112,51 @@ Page({
     if(wx.getStorageSync('loginStatus')){
       this.getListFun();
     }
+
+    if(this.data.appointmentStatusArray.length==1 || this.data.appointmentTypeArray.length==1){
+      this.getTree()
+    }
+  },
+
+  //获取字典数据
+  getTree:function(){
+    app.request.GET({
+      url:app.API.getTree,
+      page:this,
+      successFun:true
+    }).then(res=>{
+      if(this.data.appointmentStatusArray.length==1){
+        let treeData = res.data.data
+        for (const element of treeData) {
+          let arrStr;
+          switch (element.dictValue) {
+            case 'appointment_status':
+              arrStr = "appointmentStatusArray";
+              break;
+          }
+          let getArray = this.data.appointmentStatusArray
+          this.setData({
+            [arrStr]: getArray.concat(element.children)
+          })
+        }
+      }
+      if(this.data.appointmentTypeArray.length==1){
+        let treeData = res.data.data
+        for (const element of treeData) {
+          let arrStr;
+          switch (element.dictValue) {
+            case 'appointment_type':
+              arrStr = "appointmentTypeArray";
+              break;
+          }
+          let getArray = this.data.appointmentTypeArray
+          this.setData({
+            [arrStr]: getArray.concat(element.children)
+          })
+        }
+      }
+      
+    })
   },
 
   //搜索框请求S
@@ -103,6 +171,12 @@ Page({
     })
     this.getListFun();
   },
+  typeFun: function (e) {
+    this.setData({
+      appointmentType : e.currentTarget.dataset.type
+    })
+    this.getListFun()
+  },
   onCancel: function () {
     this.setData({})
   },
@@ -116,9 +190,10 @@ Page({
       page: 1
     })
     let params = {
-      current: this.data.page,
-      size: this.data.limit,
-      licenseNumber:this.data.searchVal,
+      current         : this.data.page,
+      size            : this.data.limit,
+      licenseNumber   : this.data.searchVal,
+      type            : this.data.appointmentType
       //status:1
     }
     app.request.pageFirst({
@@ -162,13 +237,47 @@ Page({
     })
   },
 
-  //授权出场
+  // 授权出场
   exitFun: function (e) {
     let _this = this
     let { id, licenseNumber } = e.currentTarget.dataset
     wx.showModal({
       title: '提示!',
-      content: `确定授权【${licenseNumber}】出场?`,
+      content: `确定授权【${licenseNumber}】出场,操作后无法撤回,请确认?`,
+      confirmColor: '#FF5B5B',
+      success: function (res) {
+        if (res.confirm) {
+          app.request.POST({
+            url: app.API.otherAuthorize,
+            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) {
+
+        }
+      }
+    })
+  },
+
+  // 强制结束
+  overFun: function (e) {
+    let _this = this
+    let { id, licenseNumber } = e.currentTarget.dataset
+    wx.showModal({
+      title: '提示!',
+      content: `确定强制结束【${licenseNumber}】预约信息,操作后无法撤回,请确认?`,
       confirmColor: '#FF5B5B',
       success: function (res) {
         if (res.confirm) {
@@ -196,64 +305,64 @@ Page({
     })
   },
 
-    // 审核S
-    showPopup(e) {
-      let { id,type } = e.currentTarget.dataset
-      this.setData({
-        show: true,
-        appointmentReason: '',
-        type:type,
-        id: id
-      });
-    },
-    onClose() {
-      this.setData({
-        show: false,
-        auditFlag:'false',
-        appointmentReason:'',
-        id: ''
-      });
-    },
-    // 单选
-    dangerStatusChange: function (e) {
-      this.setData({
-        [e.currentTarget.dataset.radiotype]: e.detail.value
-      })
-    },
-    //审核
-    formSubmit: function (e) {
-      let formData = e.detail.value;
-      var warn = ""; //弹框时提示的内容
-      if (formData.auditFlag=='true' && formData.appointmentReason == '') {
-        warn = "审核不通过时备注不能为空!";
+  // 审核S
+  showPopup(e) {
+    let { id,type } = e.currentTarget.dataset
+    this.setData({
+      show: true,
+      appointmentReason: '',
+      type:type,
+      id: id
+    });
+  },
+  onClose() {
+    this.setData({
+      show: false,
+      auditFlag:'false',
+      appointmentReason:'',
+      id: ''
+    });
+  },
+  // 单选
+  dangerStatusChange: function (e) {
+    this.setData({
+      [e.currentTarget.dataset.radiotype]: e.detail.value
+    })
+  },
+  //审核
+  formSubmit: function (e) {
+    let formData = e.detail.value;
+    var warn = ""; //弹框时提示的内容
+    if (formData.auditFlag=='true' && formData.appointmentReason == '') {
+      warn = "审核不通过时备注不能为空!";
+    }
+    formData.auditFlag = formData.auditFlag=='true'
+    if (warn != '') {
+      app.util.checkForm(warn);
+    } else {
+      let url = app.API.appointmentAudit
+      if(this.data.type == '2'){
+        url = app.API.tempAudit
       }
-      formData.auditFlag = formData.auditFlag=='true'
-      if (warn != '') {
-        app.util.checkForm(warn);
-      } else {
-        let url = app.API.appointmentAudit
-        if(this.data.type == '2'){
-          url = app.API.tempAudit
-        }
-        app.request.POST({
-          url: url,
-          params: formData,
-          page: this,
-          isLoadingTxt: '审核中...',
-          successFun: true
-        }).then(res => {
-          wx.showToast({
-            title: '审核成功',
-            icon: 'success',
-            duration: 1000,
-            mask: true
-          })
-          this.onClose()
-          this.getListFun(); //刷新列表
+      app.request.POST({
+        url: url,
+        params: formData,
+        page: this,
+        isLoadingTxt: '审核中...',
+        successFun: true
+      }).then(res => {
+        wx.showToast({
+          title: '审核成功',
+          icon: 'success',
+          duration: 1000,
+          mask: true
         })
-      }
-    },
-    // 审核E
+        this.onClose()
+        this.getListFun(); //刷新列表
+      })
+    }
+  },
+  // 审核E
 
   /**
    * 生命周期函数--监听页面隐藏

+ 31 - 1
pages/reservationMan/index.less

@@ -2,10 +2,40 @@
 .container{
   padding-bottom: 120rpx;
 }
+.filterStatus{
+  font-size: 28rpx;
+  padding: 10rpx 0 20rpx 30rpx;
+  background-color: #fff;
+  margin-bottom: 20rpx;
+  color: rgba(0,0,0,0.85);
+}
+.filterStatus view{
+  display: inline-block;
+  padding: 0 18rpx;
+  position: relative;
+}
+.filterStatus .active{
+  font-weight: bold;
+}
+.filterStatus .active::after{
+  display: inline-block;
+  content: '';
+  width: 40rpx;
+  height: 4rpx;
+  position: absolute;
+  left: 34rpx;
+  bottom: -20rpx;
+  /* margin-left: -20rpx; */
+  background: #2C6CEC;
+  border-radius: 2rpx;
+}
+.filterStatus .active.first::after{
+  left: 24rpx;
+}
 .bottomBtn{
   padding-top: 20rpx;
   text-align: right;
 }
 .bottomBtn button {
   margin-left: 0 !important;
-}
+}

+ 37 - 8
pages/reservationMan/index.wxml

@@ -1,9 +1,10 @@
 <!--pages/index/index.wxml-->
 <view class="container listMain">
   <block wx:if="{{loginStatus}}">
-      <!-- <view url="" class="addBtn" catch:tap="changeAdd" hover-class="none" catchtouchmove="buttonMove" bindtouchstart="buttonStart" bindtouchend="buttonEnd" style="top:{{buttonTop}}px;left:{{buttonLeft}}px;">
-        <van-icon name="scan" size="30px" />
-      </view> -->
+      <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>
 
       <van-sticky>
         <view class="topFilter">
@@ -40,6 +41,14 @@
         <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>
 
@@ -48,23 +57,43 @@
           <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>
+                  <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" wx:if="{{ item.appointmentType =='2' }}"><text>预约分类:{{ filters.codeAnalysis(appointmentClassifyArray,item.appointmentClassify, 'value', 'label') }}</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' }}">
-                  <van-button type="primary" 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="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.status == '5' || item.status == '6' || item.status == '7' || item.status == '8' }}" 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>

+ 32 - 2
pages/reservationMan/index.wxss

@@ -1,8 +1,38 @@
 /* pages/reservationMan/index.wxss */
-.container {
+.container{
   padding-bottom: 120rpx;
 }
-.bottomBtn {
+.filterStatus{
+  font-size: 28rpx;
+  padding: 10rpx 0 20rpx 30rpx;
+  background-color: #fff;
+  margin-bottom: 20rpx;
+  color: rgba(0,0,0,0.85);
+}
+.filterStatus view{
+  display: inline-block;
+  padding: 0 18rpx;
+  position: relative;
+}
+.filterStatus .active{
+  font-weight: bold;
+}
+.filterStatus .active::after{
+  display: inline-block;
+  content: '';
+  width: 40rpx;
+  height: 4rpx;
+  position: absolute;
+  left: 34rpx;
+  bottom: -20rpx;
+  /* margin-left: -20rpx; */
+  background: #2C6CEC;
+  border-radius: 2rpx;
+}
+.filterStatus .active.first::after{
+  left: 24rpx;
+}
+.bottomBtn{
   padding-top: 20rpx;
   text-align: right;
 }

+ 4 - 4
pages/workstand/index.js

@@ -11,17 +11,17 @@ Page({
     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", "ship"]},
+      {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:'fenpei',color:"#6c5ce7",role:["load","bizAdmin", "dispatcher"]},
-
-      {url:'/pages/reservationMan/index',flowName:'预约管理',flowIcon:'',iconfont:'yuyueguanli2',color:"#FF6160",role:["bizAdmin"]},
+      {url:'/otherPages/loadAppoint/index',flowName:'起卸订单',flowIcon:'',iconfont:'loadAppoint',color:"#6c5ce7",role:["load","bizAdmin", "dispatcher"]},
 
       {url:'/pages/deliveryConfirm/index',flowName:'发货确认',flowIcon:'',iconfont:'daifahuo1',color:"#FF9237",role:["send"]},
 

+ 19 - 12
pages/workstand/index.wxss

@@ -56,33 +56,40 @@
   bottom: 30rpx;
 }
 .menuItem2,
-.menuItem7,
-.menuItem12,
-.menuItem17 {
+.menuItem8,
+.menuItem14,
+.menuItem20 {
   background: linear-gradient(162deg, #C9BE1A 0%, #F9E595 100%);
   box-shadow: 0px 12rpx 20rpx 2rpx rgba(119, 93, 233, 0.2);
 }
 .menuItem3,
-.menuItem8,
-.menuItem13,
-.menuItem18 {
+.menuItem9,
+.menuItem15,
+.menuItem21 {
   background: linear-gradient(162deg, #E96363 0%, #F86C6C 100%);
   box-shadow: 0px 12rpx 20rpx 2rpx rgba(119, 93, 233, 0.2);
 }
 .menuItem4,
-.menuItem9,
-.menuItem14,
-.menuItem19 {
+.menuItem10,
+.menuItem16,
+.menuItem22 {
   background: linear-gradient(162deg, #67C792 0%, #74DBA6 100%);
   box-shadow: 0px 12rpx 20rpx 2rpx rgba(114, 216, 163, 0.2);
 }
 .menuItem5,
-.menuItem10,
-.menuItem15,
-.menuItem20 {
+.menuItem11,
+.menuItem17,
+.menuItem23 {
   background: linear-gradient(162deg, #7F63E9 0%, #755BE9 100%);
   box-shadow: 0px 12rpx 20rpx 2rpx rgba(119, 93, 233, 0.2);
 }
+.menuItem6,
+.menuItem12,
+.menuItem18,
+.menuItem24 {
+  background: linear-gradient(162deg, #f7ab55 0%, #ee9953 100%);
+  box-shadow: 0px 12rpx 20rpx 2rpx rgba(119, 93, 233, 0.2);
+}
 .menuItemStyle3 {
   padding: 40rpx 30rpx;
   font-size: 32rpx;

+ 10 - 1
utils/api.js

@@ -70,7 +70,16 @@ const api = {
   'chargestationAdd': '/biz/bizchargestationreservation/addChargeStationReservation', // POST 充电桩预约_新增
   'chargestationEdit': '/biz/bizchargestationreservation/editChargeStationReservation', // POST 充电桩预约_编辑
   'chargestationDelete': '/biz/bizchargestationreservation/deleteChargeStationReservation', // POST 充电桩预约_删除
-  'chargestationExit': '/biz/bizchargestationreservation/bizChargeStationReservationExit', // POST 充电桩预约_强制结束
+  'chargestationExit': '/biz/bizchargestationreservation/bizChargeStationReservationExit', // POST 充电桩预约_充电结束
+
+  // 其他预约
+  'otherPage': '/biz/bizchargestationreservation/page', // GET 充电桩预约_分页列表
+  'otherAdd': '/biz/bizchargestationreservation/addChargeStationReservation', // POST 充电桩预约_新增
+  'otherEdit': '/biz/bizchargestationreservation/editChargeStationReservation', // POST 充电桩预约_编辑
+  'otherDelete': '/biz/bizchargestationreservation/deleteChargeStationReservation', // POST 充电桩预约_删除
+  'otherExit': '/biz/bizotherappointment/bizOtherAppointmentExit', // POST 强制结束
+  'otherAuthorize': '/biz/bizotherappointment/bizOtherAppointmentAuthorize', // POST 授权离场
+  
 
   //过磅记录
   'recordList':'/biz/record/page',//过磅记录列表

+ 3 - 3
utils/iconfont.wxss

@@ -1,6 +1,6 @@
 /* 在线链接服务仅供平台体验和调试使用,平台不承诺服务的稳定性,企业客户需下载字体包自行发布使用并做好备份。 */
 @font-face {
-  font-family: 'iconfont';  /* Project id 4871829 */
+  font-family: 'iconfont';  /* Project id 4871829     4970389 */
   src: url('//at.alicdn.com/t/c/font_4871829_yjqn1hl80a.woff2?t=1749087103293') format('woff2'),
        url('//at.alicdn.com/t/c/font_4871829_yjqn1hl80a.woff?t=1749087103293') format('woff'),
        url('//at.alicdn.com/t/c/font_4871829_yjqn1hl80a.ttf?t=1749087103293') format('truetype');
@@ -111,11 +111,11 @@
 }
 
 .iconfont-loadArrive:before {
-  content: "\e66c";
+  content: "\e611";
 }
 
 .iconfont-loadAppoint:before {
-  content: "\e66c";
+  content: "\e612";
 }
 
 .iconfont-xiaoguan-begin:before {