Jelajahi Sumber

新增 删除卸货港

王智慧 3 tahun lalu
induk
melakukan
3ff206fc53

+ 63 - 13
miniprogram/pages/voyages/detail/detail.js

@@ -40,7 +40,9 @@ Page({
     tab2disabled: false,
     currentDischargeIndex: 0,
     tab3CurrentDischargeIndex: 0,
-    uploadBillVisable: true
+    uploadBillVisable: true,
+    currentBeforePortIndex: 0,
+    beforePorts: []
   },
   changeTab(e) {
     let {
@@ -312,9 +314,19 @@ Page({
 
   },
   showAddDischargePortModal() {
-    console.log(1)
+    let beforePorts = [{
+      portName: this.data.loadPort,
+      portId: 0
+    }]
+    for (let i in this.data.dischargePorts) {
+      beforePorts.push({
+        portName: this.data.dischargePorts[i],
+        portId: this.data.dischargePortIds[i]
+      })
+    }
     this.setData({
-      dischargeModal: true
+      dischargeModal: true,
+      beforePorts
     })
   },
 
@@ -332,24 +344,57 @@ Page({
 
   cancelAddDischargePort() {
     this.setData({
+      dischargeModal: false,
       currentDischargePortId: '',
       currentDischargePort: '',
-      dischargeModal: false
+      currentBeforePortIndex: 0,
+      beforePorts: []
     })
   },
   selectDischargePort(e) {
-    if (e.detail.label == this.data.loadPort) {
-      wx.showToast({
-        title: '不能同装货港',
-        icon: "error"
-      })
-      return
-    }
+    if (this.checkPort(e.detail.label, this.data.beforePorts, 'portName')) return
     this.setData({
       currentDischargePortId: e.detail.value,
       currentDischargePort: e.detail.label
     })
-    this.addDischargePort()
+  },
+  deleteDischargePort(e) {
+    let {
+      index
+    } = e.currentTarget.dataset
+    wx.showModal({
+      title: `确认删除: ${this.data.dischargePorts[index]}?`,
+      content: `此操作会同时删除当前港口下的记录`,
+      success: async (res) => {
+        if (res.confirm) {
+          let {
+            data
+          } = await postApi('/voyage/deletePort', {
+            voyageId: this.data.id,
+            portId: this.data.dischargePortIds[index]
+          })
+          if (data.status == 0) {
+            wx.showToast({
+              title: '删除成功',
+            })
+          }
+          this.getVoyageDetail()
+        }
+      }
+    })
+  },
+
+  checkPort(portName = -1, ports = [], attr) {
+    let b = ports.some((item) => {
+      return item[attr] == portName;
+    });
+    if (b) {
+      wx.showToast({
+        title: '港口已存在',
+        icon: "error"
+      })
+    }
+    return b;
   },
 
 
@@ -368,6 +413,7 @@ Page({
     let res = await postApi("/voyage/addNewPort", {
       loginAccountId: wx.getStorageSync('loginAccountId'),
       voyageId: this.data.id,
+      previousPortId: this.data.beforePorts[this.data.currentBeforePortIndex].portId,
       portId: this.data.currentDischargePortId
     })
     this.getVoyageDetail()
@@ -498,7 +544,11 @@ Page({
       voyageDetails: this.data.voyageDetails
     })
   },
-
+  bindBeforePortChange(e) {
+    this.setData({
+      currentBeforePortIndex: e.detail.value
+    })
+  },
   onLoad(options) {
     let {
       id

+ 29 - 9
miniprogram/pages/voyages/detail/detail.wxml

@@ -40,13 +40,14 @@
       <view class="line-full-item">
         <view class="line-full-title">装货港:</view>
         <view class="line-text">{{loadPort}}</view>
+        <view class="add-discharge-port" wx:if="{{voyageStatus!=2}}" bindtap="showAddDischargePortModal">添加卸货港</view>
       </view>
     </view>
     <view class="line" wx:for="{{dischargePorts}}" wx:key="item">
       <view class="line-full-item">
         <view class="line-full-title">卸货港 #{{index+1}}:</view>
         <view class="line-text">{{item}}</view>
-        <NewPicker wx:if="{{dischargePorts.length-1==index&&voyageStatus!=2}}" value="{{currentDischargePort}}" placeholder="添加卸货港" inputStyle="width: 180rpx;height: 56rpx;background: #0089FD;border-radius: 12rpx;font-size: 26rpx;font-family: PingFangSC-Medium, PingFang SC;font-weight: 500;color: #FFFFFF;line-height: 56rpx;text-align:center" spTop="top:406rpx" spHeight="360rpx" bind:selectItem="selectDischargePort" arrow="{{false}}" url="/port/getCol"></NewPicker>
+        <view bindtap="deleteDischargePort" wx:if="{{dischargePorts.length>1}}" data-index="{{index}}" style="width: 100rpx;padding:4rpx 10rpx;color: coral;">删除</view>
       </view>
     </view>
     <view class="line">
@@ -74,7 +75,7 @@
       <view class="line-full-item jcsb">
         <view class="df">
           <view class="line-full-title">到达装货港时间:</view>
-          <picker class="" disabled="{{tab2disabled}}" mode="date" model:value="{{arrivalLoadPortTime}}">
+          <picker class="picker" disabled="{{tab2disabled}}" mode="date" model:value="{{arrivalLoadPortTime}}">
             <view>
               {{arrivalLoadPortTime ||(tab2disabled?"":"请选择时间")}}
             </view>
@@ -103,7 +104,7 @@
       <view class="line-full-item jcsb">
         <view class="df">
           <view class="line-full-title">装货开始时间:</view>
-          <picker disabled="{{tab2disabled}}" mode="date" model:value="{{loadStartTime}}">
+          <picker class="picker" disabled="{{tab2disabled}}" mode="date" model:value="{{loadStartTime}}">
             <view>
               {{loadStartTime||(tab2disabled?"":"请选择时间")}}
             </view>
@@ -116,7 +117,7 @@
       <view class="line-full-item jcsb">
         <view class="df">
           <view class="line-full-title">装货结束时间:</view>
-          <picker disabled="{{tab2disabled}}" mode="date" model:value="{{loadEndTime}}" bindchange="loadEndTimeChange">
+          <picker class="picker" disabled="{{tab2disabled}}" mode="date" model:value="{{loadEndTime}}" bindchange="loadEndTimeChange">
             <view>
               {{loadEndTime||(tab2disabled?"":"请选择时间")}}
             </view>
@@ -138,7 +139,7 @@
       <view class="line-full-item jcsb">
         <view class="df aic">
           <view class="line-full-title">开航时间:</view>
-          <picker bindchange="bindDischargePortChange" data-index="{{currentDischargeIndex}}" data-param="setSailTime" disabled="{{tab2disabled}}" mode="date" value="{{voyageDetails[currentDischargeIndex].setSailTime}}">
+          <picker class="picker" bindchange="bindDischargePortChange" data-index="{{currentDischargeIndex}}" data-param="setSailTime" disabled="{{tab2disabled}}" mode="date" value="{{voyageDetails[currentDischargeIndex].setSailTime}}">
             <view>
               {{voyageDetails[currentDischargeIndex].setSailTime||(tab2disabled?"":"请选择时间")}}
             </view>
@@ -160,7 +161,7 @@
       <view class="line-full-item jcsb">
         <view class="df aic">
           <view class="line-full-title">实际到港时间:</view>
-          <picker bindchange="bindDischargePortChange" data-index="{{currentDischargeIndex}}" data-param="actualArrivalTime" disabled="{{tab2disabled}}" mode="date" value="{{voyageDetails[currentDischargeIndex].actualArrivalTime}}">
+          <picker class="picker" bindchange="bindDischargePortChange" data-index="{{currentDischargeIndex}}" data-param="actualArrivalTime" disabled="{{tab2disabled}}" mode="date" value="{{voyageDetails[currentDischargeIndex].actualArrivalTime}}">
             <view>
               {{voyageDetails[currentDischargeIndex].actualArrivalTime||(tab2disabled?"":"请选择时间")}}
             </view>
@@ -173,7 +174,7 @@
       <view class="line-full-item jcsb">
         <view class="df aic">
           <view class="line-full-title">卸货开始时间:</view>
-          <picker bindchange="bindDischargePortChange" data-index="{{currentDischargeIndex}}" data-param="dischargeStartTime" disabled="{{tab2disabled}}" mode="date" value="{{voyageDetails[currentDischargeIndex].dischargeStartTime}}">
+          <picker class="picker" bindchange="bindDischargePortChange" data-index="{{currentDischargeIndex}}" data-param="dischargeStartTime" disabled="{{tab2disabled}}" mode="date" value="{{voyageDetails[currentDischargeIndex].dischargeStartTime}}">
             <view>
               {{voyageDetails[currentDischargeIndex].dischargeStartTime||(tab2disabled?"":"请选择时间")}}
             </view>
@@ -187,7 +188,7 @@
       <view class="line-full-item jcsb">
         <view class="df aic">
           <view class="line-full-title">卸货结束时间:</view>
-          <picker bindchange="bindDischargePortChange" data-index="{{currentDischargeIndex}}" data-param="dischargeEndTime" disabled="{{tab2disabled}}" mode="date" value="{{voyageDetails[currentDischargeIndex].dischargeEndTime}}">
+          <picker class="picker" bindchange="bindDischargePortChange" data-index="{{currentDischargeIndex}}" data-param="dischargeEndTime" disabled="{{tab2disabled}}" mode="date" value="{{voyageDetails[currentDischargeIndex].dischargeEndTime}}">
             <view>
               {{voyageDetails[currentDischargeIndex].dischargeEndTime||(tab2disabled?"":"请选择时间")}}
             </view>
@@ -280,4 +281,23 @@
     </view>
     <view wx:if="{{medias.length==0}}" class="no-data">暂无照片</view>
   </view>
-</scroll-view>
+</scroll-view>
+<view class="discharge-modal" wx:if="{{dischargeModal}}">
+  <view class="discharge-card">
+    <view class="df">
+      <view>前置港口:</view>
+      <view>
+        <picker class="picker" bindchange="bindBeforePortChange" value="{{currentBeforePortIndex}}" range-key="portName" range="{{beforePorts}}">
+          <view>
+            {{beforePorts[currentBeforePortIndex].portName||'请选择'}}
+          </view>
+        </picker>
+      </view>
+    </view>
+    <NewPicker value="{{currentDischargePort}}" placeholder="选择卸货港" inputStyle="width: 180rpx;height: 56rpx;background: #0089FD;border-radius: 12rpx;font-size: 26rpx;font-family: PingFangSC-Medium, PingFang SC;font-weight: 500;color: #FFFFFF;line-height: 56rpx;text-align:center" bind:selectItem="selectDischargePort" arrow="{{false}}" url="/port/getCol"></NewPicker>
+    <view class="df aic jcsa">
+      <view class="next" bindtap="cancelAddDischargePort">取消</view>
+      <view class="next" bindtap="addDischargePort">确认</view>
+    </view>
+  </view>
+</view>

+ 36 - 1
miniprogram/pages/voyages/detail/detail.wxss

@@ -233,7 +233,7 @@
   border-radius: 20rpx 20rpx 20rpx 20rpx;
 }
 
-picker {
+.picker {
   width: 45vw;
 }
 
@@ -330,4 +330,39 @@ picker {
   margin-top: 24rpx;
   margin-bottom: 32rpx;
   height: 265rpx;
+}
+
+.add-discharge-port {
+  width: 180rpx;
+  height: 56rpx;
+  background: #0089FD;
+  border-radius: 12rpx;
+  font-size: 26rpx;
+  font-family: PingFangSC-Medium, PingFang SC;
+  font-weight: 500;
+  color: #FFFFFF;
+  line-height: 56rpx;
+  text-align: center
+}
+
+.discharge-modal {
+  position: fixed;
+  top: 0;
+  width: 100vw;
+  height: 100vh;
+  background: rgba(0, 0, 0, 0.5);
+  z-index: 101;
+
+}
+
+.discharge-card {
+  width: 500rpx;
+  height: 300rpx;
+  background: #fff;
+  border-radius: 20rpx;
+  text-align: center;
+  position: absolute;
+  top: 40%;
+  left: calc(50vw - 250rpx);
+  padding-top: 50rpx;
 }