wzh 3 лет назад
Родитель
Сommit
e0b6921aac

+ 0 - 1
miniprogram/app.wxss

@@ -6,7 +6,6 @@ input,
 picker {
   box-sizing: border-box;
   color: #333;
-  background: #fff;
 }
 
 .tac {

+ 59 - 36
miniprogram/pages/voyages/detail/detail.js

@@ -5,13 +5,13 @@ import {
 Page({
   data: {
     id: '',
-    tab: 1,
+    tab: 2,
     shipDischargeCurrentPage: 1,
     truckLoadCurrentPage: 1,
     coordinates: [],
     medias: [],
     policys: [],
-    voyage: [],
+    voyage: {},
     waybills: [],
     infoType: 'ship',
     shipDischargeList: [],
@@ -29,7 +29,11 @@ Page({
     pageSize: 20,
     latitude: 31.891992,
     longitude: 120.551369,
-    currentPortId: 0
+    currentPortId: 0,
+    dischargeModal: false,
+    currentDischargePortId: '',
+    currentDischargePort: '',
+    tab2disabled: false
   },
   changeTab(e) {
     let {
@@ -111,7 +115,7 @@ Page({
       coordinates,
       medias,
       policys,
-      voyage,
+      ...voyage,
       waybills,
       currentPortId: voyage?.voyageDetails[0].portId,
       dischargePortIds,
@@ -287,50 +291,69 @@ Page({
     }
 
   },
-
-
-  selectDiscPort(e) {
-    this.data.dischargePortIds[e.currentTarget.dataset.index] = e.detail.value
-    this.data.dischargePorts[e.currentTarget.dataset.index] = e.detail.label
+  showAddDischargePortModal() {
     this.setData({
-      dischargePorts: this.data.dischargePorts,
-      dischargePortIds: this.data.dischargePortIds
+      dischargeModal: true
     })
   },
-  addDischargePort() {
-    let dischargePorts = this.data.dischargePorts
-    let dischargePortIds = this.data.dischargePortIds
-    dischargePorts.push('')
-    dischargePortIds.push('')
+
+  onShareAppMessage() {
+    let id = wx.getStorageSync('voyageDetailId')
+    return {
+      title: '真实 实时 精准',
+      path: `/pages/sharePage/sharePage?id=${id}`
+    }
+  },
+
+  doNothing() {
+
+  },
+
+  cancelAddDischargePort() {
     this.setData({
-      dischargePortIds,
-      dischargePorts
+      currentDischargePortId: '',
+      currentDischargePort: '',
+      dischargeModal: false
     })
   },
-  deleteDischargePort(e) {
-    let dischargePorts = this.data.dischargePorts
-    let dischargePortIds = this.data.dischargePortIds
-    if (dischargePorts.length == 1) {
-      dischargePortIds = ['']
-      dischargePorts = ['']
-    } else {
-      dischargePorts.splice(e.currentTarget.dataset.index, 1)
-      dischargePortIds.splice(e.currentTarget.dataset.index, 1)
-    }
-
+  selectDischargePort(e) {
     this.setData({
-      dischargePortIds,
-      dischargePorts
+      currentDischargePortId: e.detail.value,
+      currentDischargePort: e.detail.label
     })
   },
 
 
-  onShareAppMessage() {
-    let id = wx.getStorageSync('voyageDetailId')
-    return {
-      title: '真实 实时 精准',
-      path: `/pages/sharePage/sharePage?id=${id}`
+  async addDischargePort() {
+    let {
+      currentDischargePortId,
+      currentDischargePort
+    } = this.data
+    if (!currentDischargePortId || !currentDischargePort) {
+      wx.showToast({
+        title: '请选择港口',
+        icon: "error"
+      })
+      return
     }
+    let res = await postApi("/voyage/backstage/addNewPort", {
+      loginAccountId: wx.getStorageSync('loginAccountId'),
+      voyageId: this.data.id,
+      portId: this.data.currentDischargePortId
+    })
+    this.cancelAddDischargePort()
+
+  },
+
+  bindDischargePort(e) {
+    let {
+      index,
+      param
+    } = e.currentTarget.dataset
+    this.data.voyageDetails[index][param] = e.detail.value
+    this.setData({
+      voyageDetails: this.data.voyageDetails
+    })
   },
 
 

+ 76 - 22
miniprogram/pages/voyages/detail/detail.wxml

@@ -11,36 +11,36 @@
   <view class="tabsview" bindtap="changeTab" data-tab="{{4}}" style="color:{{tab==4?'#0d8fcc':''}};border-bottom:{{tab==4?'2rpx solid #0d8fcc':''}}">卸货信息</view>
   <view class="tabsview" bindtap="changeTab" data-tab="{{5}}" style="color:{{tab==5?'#0d8fcc':''}};border-bottom:{{tab==5?'2rpx solid #0d8fcc':''}}">航次照片</view>
 </view>
-<scroll-view scroll-y="true" style="height:calc(100vh - 570rpx);font-size: 28rpx;color:#222" lower-threshold="50" bindscrolltolower="test">
+<scroll-view scroll-y="true" style="height:calc(100vh - 570rpx);font-size: 28rpx;color:#222;padding-bottom: 50rpx;" lower-threshold="50" bindscrolltolower="test">
   <view wx:if="{{tab==1}}">
     <view class="line">
       <view class="line-full-item">
         <view class="line-full-title">航次名称:</view>
-        <view class="line-full-text">{{voyage.voyageName}}</view>
+        <view class="line-full-text">{{voyageName}}</view>
       </view>
     </view>
     <view class="line">
       <view class="line-full-item">
         <view class="line-full-title">货主:</view>
-        <view class="line-text">{{voyage.cargoOwnerName}}</view>
+        <view class="line-text">{{cargoOwnerName}}</view>
       </view>
     </view>
     <view class="line">
       <view class="line-full-item">
         <view class="line-full-title">船舶名称:</view>
-        <view class="line-text">{{voyage.shipName}}</view>
+        <view class="line-text">{{shipName}}</view>
       </view>
     </view>
     <view class="line">
       <view class="line-full-item">
         <view class="line-full-title">MMSI:</view>
-        <view class="line-text">{{voyage.shipMmsi}}</view>
+        <view class="line-text">{{shipMmsi}}</view>
       </view>
     </view>
     <view class="line">
       <view class="line-item">
         <view class="line-title">装货港:</view>
-        <view class="line-text">{{voyage.loadPort}}</view>
+        <view class="line-text">{{loadPort}}</view>
       </view>
     </view>
     <view class="line" wx:for="{{dischargePorts}}">
@@ -51,17 +51,31 @@
     </view>
     <view class="df aic jcsb line">
       <view></view>
-      <view class="next" bindtap="addDischargePort" style="width: 200rpx;height: 50rpx;line-height: 50rpx;font-size: 26rpx;margin: 0;">添加卸货港</view>
+      <view class="next" bindtap="showAddDischargePortModal">添加卸货港</view>
+    </view>
+    <view wx:if="{{dischargeModal}}" class="mask" catchtouchmove="doNothing">
+      <view style="padding: 20rpx 0;">
+        <view class="df aic jcsb line">
+          <view>卸货港</view>
+          <view>
+            <RemotePicker bind:selectItem="selectDischargePort" url="/port/backstage/getCol"></RemotePicker>
+          </view>
+        </view>
+        <view class="df aic jcsa">
+          <view class="next mt30" bindtap="addDischargePort">添加卸货港</view>
+          <view class="next mt30" bindtap="cancelAddDischargePort">取消</view>
+        </view>
+      </view>
     </view>
     <view class="line">
       <view class="line-item">
         <view class="line-title">货种:</view>
-        <view class="line-text">{{voyage.cargo}}</view>
+        <view class="line-text">{{cargo}}</view>
       </view>
       <view class="line-item">
         <view class="line-title">货量:</view>
-        <view class="line-text">{{voyage.tons}} 吨</view>
-        <view class="line-text">{{voyage.pieces}} 件</view>
+        <view class="line-text">{{tons}} 吨</view>
+        <view class="line-text">{{pieces}} 件</view>
       </view>
     </view>
   </view>
@@ -69,66 +83,106 @@
     <view class="line">
       <view class="line-full-item">
         <view class="line-full-title">到达装货港时间:</view>
-        <view class="line-full-text">{{voyage.arrivalLoadPortTime}}</view>
+        <picker disabled="{{tab2disabled}}" mode="date" model:value="{{arrivalLoadPortTime}}" style="width: 40vw;">
+          <view>
+            {{arrivalLoadPortTime ||"请选择"}}
+          </view>
+        </picker>
       </view>
     </view>
     <view class="line">
       <view class="line-full-item">
         <view class="line-full-title">实际货量:</view>
-        <view class="line-full-text">{{voyage.actualLoadTons}}吨-{{voyage.actualLoadPieces}}件</view>
+        <input disabled="{{tab2disabled}}" model:value="{{actualLoadTons}}" type="text" style="width: 10vw;" />{{' 吨'}}
+        <input disabled="{{tab2disabled}}" model:value="{{actualLoadPieces}}" type="text" style="width: 10vw;" />{{' 件'}}
       </view>
     </view>
     <view class="line">
       <view class="line-full-item">
         <view class="line-full-title">装货开始时间:</view>
-        <view class="line-full-text">{{voyage.loadStartTime}}</view>
+        <picker disabled="{{tab2disabled}}" mode="date" model:value="{{loadStartTime}}" style="width: 40vw;">
+          <view>
+            {{loadStartTime||"请选择"}}
+          </view>
+        </picker>
       </view>
     </view>
     <view class="line">
       <view class="line-full-item">
         <view class="line-full-title">装货结束时间:</view>
-        <view class="line-full-text">{{voyage.loadEndTime}}</view>
+        <picker disabled="{{tab2disabled}}" mode="date" model:value="{{loadStartTime}}" style="width: 40vw;">
+          <view>
+            {{loadStartTime||"请选择"}}
+          </view>
+        </picker>
       </view>
     </view>
-    <block wx:for="{{voyage.voyageDetails}}">
+    <block wx:for="{{voyageDetails}}">
       <view class="line" style="padding: 20rpx 0 10rpx 0;border-top: 1px solid grey;">
         {{item.portName}} # {{index+1}}
       </view>
       <view class="line">
         <view class="line-full-item">
           <view class="line-full-title">开航时间:</view>
-          <view class="line-full-text">{{item.setSailTime}}</view>
+          <picker bindchange="bindDischargePort" data-index="{{index}}" data-param="setSailTime" disabled="{{tab2disabled}}" mode="date" value="{{item.setSailTime}}" style="width: 40vw;">
+            <view>
+              {{item.setSailTime||"请选择"}}
+            </view>
+          </picker>
         </view>
       </view>
       <view class="line">
         <view class="line-full-item">
           <view class="line-full-title">预计到港时间:</view>
-          <view class="line-full-text">{{item.expectedArrivalTime}}</view>
+          <picker bindchange="bindDischargePort" data-index="{{index}}" data-param="expectedArrivalTime" disabled="{{tab2disabled}}" mode="date" value="{{item.expectedArrivalTime}}" style="width: 40vw;">
+            <view>
+              {{item.expectedArrivalTime||"请选择"}}
+            </view>
+          </picker>
         </view>
       </view>
       <view class="line">
         <view class="line-full-item">
           <view class="line-full-title">实际到港时间:</view>
-          <view class="line-full-text">{{item.actualArrivalTime}}</view>
+          <picker bindchange="bindDischargePort" data-index="{{index}}" data-param="actualArrivalTime" disabled="{{tab2disabled}}" mode="date" value="{{item.actualArrivalTime}}" style="width: 40vw;">
+            <view>
+              {{item.actualArrivalTime||"请选择"}}
+            </view>
+          </picker>
         </view>
       </view>
       <view class="line">
         <view class="line-full-item">
           <view class="line-full-title">卸货开始时间:</view>
-          <view class="line-full-text">{{item.dischargeStartTime}}</view>
+          <picker bindchange="bindDischargePort" data-index="{{index}}" data-param="dischargeStartTime" disabled="{{tab2disabled}}" mode="date" value="{{item.dischargeStartTime}}" style="width: 40vw;">
+            <view>
+              {{item.dischargeStartTime||"请选择"}}
+            </view>
+          </picker>
         </view>
       </view>
       <view class="line">
         <view class="line-full-item">
           <view class="line-full-title">卸货结束时间:</view>
-          <view class="line-full-text">{{item.dischargeEndTime}}</view>
+          <picker bindchange="bindDischargePort" data-index="{{index}}" data-param="dischargeEndTime" disabled="{{tab2disabled}}" mode="date" value="{{item.dischargeEndTime}}" style="width: 40vw;">
+            <view>
+              {{item.dischargeEndTime||"请选择"}}
+            </view>
+          </picker>
         </view>
       </view>
-      <view class="line">
+      <!-- <view class="line">
         <view class="line-full-item">
           <view class="line-full-title">实际卸货量:</view>
           <view class="line-full-text">{{item.actualDischargeTons}}吨-{{item.actualDischargePieces}}件</view>
         </view>
+      </view> -->
+      <view class="line">
+        <view class="line-full-item">
+          <view class="line-full-title">实际货量:</view>
+          <input disabled="{{tab2disabled}}" bindblur="bindDischargePort" value="{{item.actualDischargeTons}}" data-index="{{index}}" data-param="actualDischargeTons" type="text" style="width: 10vw;" />{{' 吨'}}
+          <input disabled="{{tab2disabled}}" bindblur="bindDischargePort" value="{{item.actualDischargePieces}}" data-index="{{index}}" data-param="actualDischargePieces" type="text" style="width: 10vw;" />{{' 件'}}
+        </view>
       </view>
     </block>
   </view>
@@ -147,7 +201,7 @@
   </view>
   <view wx:if="{{tab==4}}">
     <scroll-view scroll-x="{{true}}" style="white-space: nowrap;">
-      <view class="{{['port-btns',currentPortId == item.portId?'current-port-btn':'','mr20']}}" wx:for="{{voyage.voyageDetails}}" bindtap="changePort" data-id="{{item.portId}}">{{item.portName}}</view>
+      <view class="{{['port-btns',currentPortId == item.portId?'current-port-btn':'','mr20']}}" wx:for="{{voyageDetails}}" bindtap="changePort" data-id="{{item.portId}}">{{item.portName}}</view>
     </scroll-view>
     <view class="df aic jcsb pb20" style="border-bottom: 2rpx solid #ddd;">
       <view bindtap="changeInfoType" data-type="ship" style="color:{{infoType=='ship'?'#0d8fcc':''}};border-bottom:{{infoType=='ship'?'2rpx solid #0d8fcc':''}}">船舶卸货记录</view>

+ 33 - 5
miniprogram/pages/voyages/detail/detail.wxss

@@ -153,14 +153,18 @@ page {
 
 .next {
   text-align: center;
-  width: 300rpx;
-  height: 80rpx;
-  line-height: 80rpx;
+
+
+
   color: #fff;
   background: #0094FE;
   border-radius: 10rpx;
-  margin: 0 auto;
-  margin-top: 5vh;
+
+  width: 200rpx;
+  height: 50rpx;
+  line-height: 50rpx;
+  font-size: 26rpx;
+  margin: 0;
 }
 
 .delete {
@@ -170,4 +174,28 @@ page {
   width: 52rpx;
   height: 52rpx;
   z-index: 5;
+}
+
+.mask {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 200;
+  background: rgba(255, 255, 255, 0.99);
+}
+
+.mask>view {
+  width: 80vw;
+  height: 35vw;
+  border-radius: 3vw;
+  margin: 50% auto;
+  box-shadow: 2rpx 2rpx 10rpx 1rpx rgb(175, 172, 172)
+}
+
+picker,
+input {
+  border: 1rpx solid grey;
+  padding: 0rpx 10rpx;
 }