wzh 3 anni fa
parent
commit
3031c7c404

+ 4 - 1
miniprogram/app.json

@@ -18,7 +18,10 @@
     "pages/voyageManage/myDaily/myDaily",
     "pages/voyageManage/myDaily/examine/examine",
     "pages/voyages/uploadCarLoadRecord/uploadCarLoadRecord",
-    "pages/voyages/uploadDischarge/uploadDischarge"
+    "pages/voyages/uploadDischarge/uploadDischarge",
+    "pages/index/declarePort/voyageList",
+    "pages/index/weather/weatherList",
+    "pages/index/declarePort/detail"
   ],
   "window": {
     "backgroundColor": "#F6F6F6",

BIN
miniprogram/images/port.png


BIN
miniprogram/images/weather.png


+ 60 - 0
miniprogram/pages/index/declarePort/detail.js

@@ -0,0 +1,60 @@
+import {
+  postApi
+} from "../../../apis/api"
+
+// pages/index/declarePort/detail.js
+Page({
+  data: {
+    tab: 1,
+    detail: {
+
+    }
+  },
+  changeTab(e) {
+    this.setData({
+      tab: e.currentTarget.dataset.tab
+    })
+  },
+  async getDetail(voyageId) {
+    let res = await postApi('/port/report/detail', {
+      voyageId
+    })
+    this.setData({
+      detail: res.data.result
+    })
+  },
+
+  preview(e) {
+    let {
+      url
+    } = e.currentTarget.dataset
+    wx.previewImage({
+      urls: [url],
+    })
+  },
+
+  async report() {
+    let res = await postApi('/port/report/report', {
+      voyageId: this.data.detail.voyageId
+    })
+    if (res.data.status == 0) {
+      wx.showToast({
+        title: '报港成功!',
+        success: e => {
+          wx.navigateBack()
+        }
+      })
+    } else {
+      wx.showToast({
+        title: res.data.msg,
+        icon: "error"
+      })
+    }
+  },
+  onLoad(options) {
+    let {
+      id
+    } = options
+    this.getDetail(id)
+  },
+})

+ 3 - 0
miniprogram/pages/index/declarePort/detail.json

@@ -0,0 +1,3 @@
+{
+  "usingComponents": {}
+}

+ 65 - 0
miniprogram/pages/index/declarePort/detail.wxml

@@ -0,0 +1,65 @@
+<!--pages/index/declarePort/detail.wxml-->
+<view class="df aic jcsa tabs">
+  <view class="tabsview" bindtap="changeTab" data-tab="{{1}}" style="color:{{tab==1?'#0d8fcc':''}};border-bottom:{{tab==1?'4rpx solid #0d8fcc':''}}">船 东</view>
+  <view class="tabsview" bindtap="changeTab" data-tab="{{2}}" style="color:{{tab==2?'#0d8fcc':''}};border-bottom:{{tab==2?'4rpx solid #0d8fcc':''}}">船 舶</view>
+  <view class="tabsview" bindtap="changeTab" data-tab="{{3}}" style="color:{{tab==3?'#0d8fcc':''}};border-bottom:{{tab==3?'4rpx solid #0d8fcc':''}}">航 次</view>
+</view>
+<scroll-view class="p40" scroll-y="true" style="height: calc(100vh - 240rpx);">
+  <block wx:if="{{tab==1}}">
+    <view class="line">
+      <view class="title">船东姓名</view>
+      <view class="content">{{detail.userName}}</view>
+    </view>
+    <view class="line">
+      <view class="title">手机号</view>
+      <view class="content">{{detail.phone}}</view>
+    </view>
+    <view class="line">
+      <view class="title">身份证号</view>
+      <view class="content">{{detail.idcardNo}}</view>
+    </view>
+    <view class="line">
+      <view class="title">身份证人像面</view>
+      <image wx:if="{{detail.idcardFrontViewUrl}}" bindtap="preview" data-url="{{detail.idcardFrontViewUrl}}" mode="aspectFit" src="{{detail.idcardFrontViewUrl}}"></image>
+      <view wx:else>暂无图片</view>
+    </view>
+    <view class="line">
+      <view class="title">身份证国徽面</view>
+      <image wx:if="{{detail.idcardBackViewUrl}}" bindtap="preview" data-url="{{detail.idcardBackViewUrl}}" mode="aspectFit" src="{{detail.idcardBackViewUrl}}"></image>
+      <view wx:else>暂无图片</view>
+    </view>
+  </block>
+  <block wx:if="{{tab==2}}">
+    <view class="line">
+      <view class="title">船舶名称</view>
+      <view class="content">{{detail.shipname}}</view>
+    </view>
+    <view class="line">
+      <view class="title">MMSI</view>
+      <view class="content">{{detail.mmsi}}</view>
+    </view>
+    <view class="line" wx:for="{{detail.shipCerts}}">
+      <view class="title">船舶证书 #{{index+1}}</view>
+      <image bindtap="preview" data-url="{{item.viewUrl}}" mode="aspectFit" src="{{item.viewUrl}}"></image>
+    </view>
+  </block>
+  <block wx:if="{{tab==3}}">
+    <view class="line">
+      <view class="title">航次名称</view>
+      <view class="content">{{detail.voyageName}}</view>
+    </view>
+    <view class="line">
+      <view class="title">货种</view>
+      <view class="content">{{detail.cargo}}</view>
+    </view>
+    <view class="line">
+      <view class="title">货量</view>
+      <view class="content">{{detail.actualLoadTons}} 吨 / {{detail.actualLoadPieces||'-'}} 件</view>
+    </view>
+    <view class="line">
+      <view class="title">预计到港时间</view>
+      <view class="content">{{detail.expectedArrivalTime||''}}</view>
+    </view>
+  </block>
+</scroll-view>
+<button wx:if="{{detail.portReportStatus==0}}" type="primary" bindtap="report" style="background: #409EFF;">申请报港</button>

+ 37 - 0
miniprogram/pages/index/declarePort/detail.wxss

@@ -0,0 +1,37 @@
+/* pages/index/declarePort/detail.wxss */
+
+.tabs {
+  width: 100%;
+  height: 100rpx;
+  background: #fff;
+  border-bottom: 2rpx solid grey;
+  font-size: 28rpx;
+}
+
+.tabsview {
+  height: 50rpx;
+  width: 200rpx;
+  text-align: center;
+}
+
+.line {
+  display: flex;
+  justify-content: space-between;
+  margin-bottom: 40rpx;
+  align-items: center;
+  font-size: 28rpx;
+}
+
+.line .title {
+  width: 200rpx;
+  color: #777;
+}
+
+.img-line {
+  margin-bottom: 30rpx;
+}
+
+image {
+  width: 200px;
+  height: 100px;
+}

+ 153 - 0
miniprogram/pages/index/declarePort/voyageList.js

@@ -0,0 +1,153 @@
+const {
+  postApi
+} = require("../../../apis/api")
+
+import {
+  datetimeFormat
+} from "../../../utils/utils"
+
+const app = getApp()
+
+Page({
+  data: {
+    cargoOwnerId: 0,
+    defaultParams: {
+      loginAccountId: wx.getStorageSync('loginAccountId')
+    },
+    maintab: 1,
+    status: 0,
+    currentPage: 1,
+    size: 20,
+    list: [],
+    total: 0,
+    term: "",
+    isFreshing: false,
+    apiArr: ['/voyage/wx/list', '/dayReport/list', '/bill/list']
+  },
+  selectCargoOwner(e) {
+    this.setData({
+      cargoOwnerId: e.detail.value,
+      list: [],
+      currentPage: 1,
+    })
+    this.getList()
+  },
+  changeMainTab(e) {
+    let {
+      maintab,
+      api: currentApi
+    } = e.currentTarget.dataset
+    app.globalData.maintab = maintab
+    this.setData({
+      maintab,
+      currentApi,
+      status: 1,
+      list: [],
+      currentPage: 1
+    })
+    this.getList()
+  },
+  async getList(isScroll) {
+    if (!wx.getStorageSync('loginAccountId')) {
+      wx.showToast({
+        title: '尚未登录',
+        icon: "error"
+      })
+      return
+    }
+    this.setData({
+      isFreshing: true
+    })
+    let res = await postApi('/port/report/list', {
+      loginAccountId: wx.getStorageSync('loginAccountId'),
+      // cargoOwnerId: this.data.cargoOwnerId,
+      term: this.data.term,
+      type: this.data.status,
+      currentPage: this.data.currentPage,
+      size: this.data.size,
+    })
+    this.setData({
+      currentPage: this.data.currentPage,
+      isFreshing: false
+    })
+    if (res.data.status == 0) {
+      if (isScroll) {
+        this.setData({
+          list: [...this.data.list, ...res.data.result],
+          total: res.data.total
+        })
+      } else {
+        this.setData({
+          list: res.data.result,
+          total: res.data.total
+        })
+      }
+    } else {
+      this.setData({
+        list: [],
+        total: 0
+      })
+      wx.showToast({
+        icon: "none",
+        title: res.data.msg,
+      })
+    }
+  },
+  changeStatus(e) {
+    let {
+      status
+    } = e.currentTarget.dataset
+    this.setData({
+      status,
+      currentPage: 1,
+      size: 20,
+      total: 0
+    })
+    this.getList()
+  },
+  goToDetail(e) {
+    let {
+      id,
+    } = e.currentTarget.dataset
+    wx.navigateTo({
+      url: `/pages/index/declarePort/detail?id=${id}`
+    })
+  },
+  scrollList() {
+    if (this.data.total == 0 || this.data.total <= this.data.size * this.data.currentPage) return
+    this.data.currentPage += 1
+    this.getList(true)
+  },
+  scrollDownList() {
+    this.setData({
+      total: 0,
+      currentPage: 1,
+      list: []
+    })
+    this.getList()
+  },
+
+  call(e) {
+    wx.makePhoneCall({
+      phoneNumber: e.currentTarget.dataset.phone
+    })
+  },
+
+  inputSearch(e) {
+    this.setData({
+      currentPage: 1
+    })
+    this.getList()
+  },
+  onLoad() {
+
+  },
+  onShow() {
+    this.setData({
+      maintab: app.globalData.maintab || 1,
+      todayDate: datetimeFormat("年月月日日"),
+      loginAccountId: wx.getStorageSync('loginAccountId')
+    })
+    this.getList()
+  }
+})

+ 7 - 0
miniprogram/pages/index/declarePort/voyageList.json

@@ -0,0 +1,7 @@
+{
+  "usingComponents": {
+    "RemotePicker": "/components/remotePicker/remotePicker"
+  },
+  "navigationBarTitleText": "报港列表",
+  "disableScroll": true
+}

+ 20 - 0
miniprogram/pages/index/declarePort/voyageList.wxml

@@ -0,0 +1,20 @@
+<view class="df aic jcsb line">
+  <view>航次搜索</view>
+  <view>
+    <input class="new-seach" confirm-type="search" bindconfirm="inputSearch" model:value="{{term}}" type="text" />
+  </view>
+</view>
+<view class="df aic jcsa tabs">
+  <view class="tabsview" bindtap="changeStatus" data-status="{{0}}" style="color:{{status==0?'#0d8fcc':''}};border-bottom:{{status==0?'4rpx solid #0d8fcc':''}}">未报港</view>
+  <view class="tabsview" bindtap="changeStatus" data-status="{{1}}" style="color:{{status==1?'#0d8fcc':''}};border-bottom:{{status==1?'4rpx solid #0d8fcc':''}}">已报港</view>
+</view>
+<scroll-view bindrefresherrefresh="scrollDownList" refresher-triggered="{{isFreshing}}" refresher-enabled="{{true}}" scroll-y="true" bindscrolltolower="scrollList" style="height:calc(100vh - 140rpx);padding-bottom: 100rpx;background: #fff;">
+  <view class="df aic jcsb list" wx:for="{{list}}" wx:key="index" bindtap="goToDetail" data-id="{{item.id}}">
+    <view class="col-1">{{item.shipName}}</view>
+    <view class="col-2">{{item.loadPort}}-{{item.discPort}}</view>
+    <view class="col-3">{{item.cargo}}</view>
+    <view class="col-4">{{item.transStatusName}}</view>
+    <view class="col-5" style="color:#0d8fcc">{{status==0?'去报港':'查看'}}</view>
+  </view>
+  <view bindtap="scrollList" class="bottom-text">{{total==0?'暂无数据':(total>size*currentPage?'点击或滑动加载更多...':'已加载完毕')}}</view>
+</scroll-view>

+ 99 - 0
miniprogram/pages/index/declarePort/voyageList.wxss

@@ -0,0 +1,99 @@
+/* pages/voyageManage/voyageManage.wxss */
+
+.line {
+  width: 80%;
+  margin: 20rpx auto;
+  font-size: 28rpx;
+  position: relative;
+}
+
+.bottom-tabs>view {
+  height: 90rpx;
+  border-top: 1rpx solid grey;
+  border-bottom: 1rpx solid grey;
+  line-height: 86rpx;
+  font-size: 27rpx;
+}
+
+.current-bottom-tab {
+  background: #0094FE;
+  color: #fff;
+  border: none;
+}
+
+.maintab1 {
+  width: 33vw;
+  border-left: none;
+}
+
+.maintab2 {
+  width: 34vw;
+  border-left: 1rpx solid grey;
+  border-right: 1rpx solid grey;
+}
+
+.maintab3 {
+  width: 33vw;
+  border-right: none;
+}
+
+/* --- */
+
+.tabs {
+  width: 100%;
+  height: 80rpx;
+  background: #fff;
+  box-shadow: rgb(209, 206, 206) 5rpx 5rpx 10rpx;
+  border-bottom: 2rpx solid grey;
+  font-size: 28rpx;
+}
+
+.tabsview {
+  height: 50rpx;
+  text-align: center;
+}
+
+.p10 {
+  padding: 10rpx 20rpx;
+}
+
+.m30a {
+  margin: 30rpx auto;
+}
+
+.list {
+  padding: 20rpx;
+  font-size: 28rpx;
+}
+
+.col-1 {
+  width: 22vw;
+}
+
+.col-2 {
+  width: 29vw;
+}
+
+
+.col-3 {
+  width: 13vw;
+}
+
+.col-4 {
+  width: 15vw;
+}
+
+.bottom-text {
+  text-align: center;
+  padding-top: 30rpx;
+  padding-bottom: 50rpx;
+  font-size: 26rpx;
+  color: #777;
+}
+
+.new-seach {
+  padding-left: 20rpx;
+  border: 1px solid grey;
+  height: 80rpx;
+  width: 50vw;
+}

+ 13 - 4
miniprogram/pages/index/index.wxml

@@ -21,19 +21,19 @@
     <view class="df">
       <view bindtap="goTo" data-maintab="{{2}}" class="go-to" data-url="/pages/voyageManage/voyageManage">
         <image src="../../images/camera.png"></image>
-        <view>日报</view>
+        <view>日 报</view>
         <view class="badge">{{indexInfo.dayReportNum||0}}</view>
       </view>
       <view bindtap="goTo" data-maintab="{{1}}" class="go-to" data-url="/pages/voyageManage/voyageManage">
         <image src="../../images/ship.png"></image>
-        <view>卸货</view>
+        <view>卸 货</view>
         <view class="badge">{{indexInfo.discVoyageNum||0}}</view>
       </view>
     </view>
     <view class="df">
       <view bindtap="goTo" data-maintab="{{3}}" class="go-to" data-url="/pages/voyageManage/voyageManage">
         <image src="../../images/bills.png"></image>
-        <view>单据</view>
+        <view>单 据</view>
         <view class="badge">{{indexInfo.billNum||0}}</view>
       </view>
       <view bindtap="goTo" class="go-to" data-url="/pages/voyageManage/createVoyage/createVoyage">
@@ -41,6 +41,15 @@
         <view>创建航次</view>
       </view>
     </view>
-
+    <view class="df">
+      <view bindtap="goTo" class="go-to" data-url="/pages/index/weather/weatherList">
+        <image src="../../images/weather.png"></image>
+        <view>天气查询</view>
+      </view>
+      <view bindtap="goTo" class="go-to" data-url="/pages/index/declarePort/voyageList">
+        <image src="../../images/port.png"></image>
+        <view>报 港</view>
+      </view>
+    </view>
   </view>
 </view>

+ 5 - 5
miniprogram/pages/index/index.wxss

@@ -2,7 +2,7 @@
   width: 50%;
   text-align: center;
   color: #fff;
-  height: 220rpx;
+  height: 18vh;
 }
 
 .block-line:first-child>view:first-child {
@@ -49,7 +49,7 @@
 }
 
 .tools>view {
-  height: 50%;
+  height: 20vh;
 }
 
 .tools>view>view {
@@ -58,9 +58,9 @@
 }
 
 .tools>view>view>image {
-  width: 25vw;
-  height: 25vw;
-  margin-top: 20%;
+  width: 20vw;
+  height: 20vw;
+  margin-top: 10%;
 }
 
 .go-to {

+ 66 - 0
miniprogram/pages/index/weather/weatherList.js

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

+ 3 - 0
miniprogram/pages/index/weather/weatherList.json

@@ -0,0 +1,3 @@
+{
+  "usingComponents": {}
+}

+ 2 - 0
miniprogram/pages/index/weather/weatherList.wxml

@@ -0,0 +1,2 @@
+<!--pages/index/weather/weatherList.wxml-->
+<text>pages/index/weather/weatherList.wxml</text>

+ 1 - 0
miniprogram/pages/index/weather/weatherList.wxss

@@ -0,0 +1 @@
+/* pages/index/weather/weatherList.wxss */

+ 14 - 0
project.private.config.json

@@ -43,6 +43,20 @@
           "query": "",
           "launchMode": "default",
           "scene": null
+        },
+        {
+          "name": "",
+          "pathName": "pages/index/declarePort/voyageList",
+          "query": "",
+          "launchMode": "default",
+          "scene": null
+        },
+        {
+          "name": "",
+          "pathName": "pages/index/declarePort/detail",
+          "query": "id=244",
+          "launchMode": "default",
+          "scene": null
         }
       ]
     }