Browse Source

refactor(miniprogram): 优化多个页面的登录状态检查和数据展示逻辑

- 在 cert、maritime、school、securityCheck、shipyard 和 takePhoto 页面中添加登录状态检查
- 优化各个页面的数据展示逻辑,增加暂无数据提示
- 在 utils 中添加 checkToken 函数,用于统一处理登录状态检查
- 调整 maritime 页面公告列表样式,设置最大高度
wzg 8 months ago
parent
commit
cdef452cb2

+ 1 - 0
miniprogram/pages/cert/cert.js

@@ -9,6 +9,7 @@ Page({
     certs: [],
     contacts: [],
     introduce: {},
+    accessToken: wx.getStorageSync("accessToken") || "",
   },
   async getCerts() {
     let { data } = await getApi("/ship/cert/list");

+ 9 - 4
miniprogram/pages/cert/cert.wxml

@@ -5,7 +5,7 @@
     <!-- 船舶基础信息 -->
     <view class="card">
       <view class="card-header">船舶基础信息</view>
-      <view class="card-content">
+      <view class="card-content" wx:if="{{shipName}}">
         <view class="info-item">
           <view class="info-label">船舶名称</view>
           <view class="info-value">{{shipName}}</view>
@@ -15,11 +15,12 @@
           <view class="info-value">{{mmsi}}</view>
         </view>
       </view>
+      <view class="tac fs28 c7" wx:else>暂无数据</view>
     </view>
     <!-- 船舶证书 -->
     <view class="card">
       <view class="card-header">船舶证书</view>
-      <view class="card-content">
+      <view class="card-content" wx:if="{{shipCerts.length}}">
         <view class="cert-list">
           <view class="cert-item" wx:for="{{shipCerts}}" wx:key="index">
             <view class="cert-title">{{item.name}}</view>
@@ -36,11 +37,12 @@
           </view>
         </view>
       </view>
+      <view class="tac fs28 c7" wx:else>暂无数据</view>
     </view>
     <!-- 船员证书 -->
     <view class="card">
       <view class="card-header">船员证书</view>
-      <view class="card-content">
+      <view class="card-content" wx:if="{{crewCerts.length}}">
         <view class="crew-list">
           <view class="crew-item" wx:for="{{crewCerts}}" wx:key="index">
             <view class="crew-name">{{item.name}}</view>
@@ -86,10 +88,13 @@
           </view>
         </view>
       </view>
+      <view class="tac fs28 c7" wx:else>暂无数据</view>
     </view>
     <!-- 分享按钮 -->
     <view class="share-section">
-      <button class="share-btn" open-type="share">一键分享证书信息</button>
+      <button wx:if="{{accessToken}}" class="share-btn" open-type="share" bindtap="share">
+        一键分享证书信息
+      </button>
       <view class="share-footer">船东证书服务由汇很多船东科技服务平台提供</view>
     </view>
   </view>

+ 2 - 0
miniprogram/pages/maritime/maritime.js

@@ -1,3 +1,4 @@
+import { checkToken } from "../../utils/utils";
 Page({
   data: {
     notices: [],
@@ -109,6 +110,7 @@ Page({
   },
 
   submitAidRequest() {
+    if (!checkToken("尚未登录")) return;
     if (!this.data.aidRequest.trim()) {
       wx.showToast({
         title: "请输入法律援助需求",

+ 2 - 1
miniprogram/pages/maritime/maritime.wxml

@@ -25,13 +25,14 @@
     <!-- 法律援助机构介绍 -->
     <view class="card">
       <view class="card-header">法律援助机构</view>
-      <view class="card-content">
+      <view class="card-content" wx:if="{{legalOrg.name}}">
         <view class="org-info">
           <view class="org-name">{{legalOrg.name}}</view>
           <image class="org-photo" mode="aspectFit" src="{{legalOrg.photoUrl}}"></image>
           <view class="org-intro">{{legalOrg.introduction}}</view>
         </view>
       </view>
+      <view class="tac fs28 c7 p40" wx:else>暂无数据</view>
     </view>
     <!-- 法律援助申请 -->
     <view class="card">

+ 1 - 1
miniprogram/pages/maritime/maritime.wxss

@@ -37,7 +37,7 @@
 
 /* 海事公告列表样式 */
 .notice-scroll {
-  height: 600rpx;
+  max-height: 600rpx;
   width: 100%;
   overflow: hidden;
 }

+ 24 - 21
miniprogram/pages/school/school.wxml

@@ -1,10 +1,10 @@
 <view class="container">
   <!-- 顶部标题 -->
-  <!-- <view class="header">学校服务</view> -->
+  <view class="header">学校服务</view>
   <!-- 内容区域 -->
   <view class="content">
     <!-- 学校基本信息 -->
-    <view class="card">
+    <view class="card" wx:if="{{school.crewSchoolName}}">
       <view class="card-header">{{school.crewSchoolName}}</view>
       <view class="card-content">
         <view class="school-info">
@@ -15,8 +15,9 @@
         </view>
       </view>
     </view>
+    <view class="tac fs28 c7 p40" wx:else>尚未登录,暂无数据</view>
     <!-- 运营数据 -->
-    <view class="card">
+    <view class="card" wx:if="{{school.crewSchoolName}}">
       <view class="card-header">运营数据</view>
       <view class="card-content">
         <view class="operation-data">
@@ -32,28 +33,30 @@
       </view>
     </view>
     <!-- 培训公告 -->
-    <view class="card" wx:for="{{noticeList}}" wx:key="id">
-      <view class="card-header">培训公告</view>
-      <view class="card-content">
-        <view class="notice-info">
-          <view class="notice-title">{{item.trainingNoticeTitle}}</view>
-          <view class="notice-meta">
-            <text class="notice-author">{{item.postedBy}}</text>
-            <text class="notice-date">{{item.createTime}}</text>
-          </view>
-          <image class="notice-photo" mode="aspectFill" src="{{item.trainingNoticeImgUrl}}"></image>
-          <view class="notice-content">
-            <text>{{item.trainingNoticeContent}}</text>
-          </view>
-          <!-- <button class="contact-btn" bindtap="makePhoneCall" data-id="{{item.id}}" data-phone="{{item.contactPhone}}">
+    <block wx:if="{{school.crewSchoolName}}">
+      <view class="card" wx:for="{{noticeList}}" wx:key="id">
+        <view class="card-header">培训公告</view>
+        <view class="card-content">
+          <view class="notice-info">
+            <view class="notice-title">{{item.trainingNoticeTitle}}</view>
+            <view class="notice-meta">
+              <text class="notice-author">{{item.postedBy}}</text>
+              <text class="notice-date">{{item.createTime}}</text>
+            </view>
+            <image class="notice-photo" mode="aspectFill" src="{{item.trainingNoticeImgUrl}}"></image>
+            <view class="notice-content">
+              <text>{{item.trainingNoticeContent}}</text>
+            </view>
+            <!-- <button class="contact-btn" bindtap="makePhoneCall" data-id="{{item.id}}" data-phone="{{item.contactPhone}}">
             拨打电话
           </button> -->
-          <button class="share-btn" open-type="share" data-title="{{item.trainingNoticeTitle}}">
-            分享公告
-          </button>
+            <button class="share-btn" open-type="share" data-title="{{item.trainingNoticeTitle}}">
+              分享公告
+            </button>
+          </view>
         </view>
       </view>
-    </view>
+    </block>
   </view>
 </view>
 <view class="h200"></view>

+ 3 - 2
miniprogram/pages/securityCheck/securityCheck.wxml

@@ -1,8 +1,8 @@
 <view class="container">
   <!-- 顶部标题 -->
-  <!-- <view class="header">海事年检通知</view> -->
+  <view class="header">海事年检通知</view>
   <!-- 内容区域 -->
-  <view class="content">
+  <view class="content" wx:if="{{noticeList.length}}">
     <view class="card" wx:for="{{noticeList}}" wx:key="id">
       <view class="notice-title">{{item.noticeTitle}}</view>
       <view class="notice-info">
@@ -20,5 +20,6 @@
       <button class="share-btn" open-type="share" data-title="{{item.noticeTitle}}">分享通知</button>
     </view>
   </view>
+  <view class="tac fs28 c7 p40" wx:else>暂无数据</view>
 </view>
 <view class="h200"></view>

+ 3 - 2
miniprogram/pages/shipyard/shipyard.wxml

@@ -1,8 +1,8 @@
 <view class="container">
   <!-- 顶部标题 -->
-  <!-- <view class="header">船厂服务</view> -->
+  <view class="header">船厂服务</view>
   <!-- 内容区域 -->
-  <view class="content">
+  <view class="content" wx:if="{{shipyardList.length}}">
     <view class="card" wx:for="{{shipyardList}}" wx:key="id">
       <!-- 船厂基本信息 -->
       <view class="card-header">{{item.shipyardName}}</view>
@@ -45,5 +45,6 @@
       <button class="share-btn" open-type="share" data-title="{{item.shipyardName}}">分享船厂</button>
     </view>
   </view>
+  <view class="tac fs28 c7 p40" wx:else>暂无数据</view>
 </view>
 <view class="h200"></view>

+ 7 - 14
miniprogram/pages/takePhoto/takePhoto.js

@@ -1,6 +1,6 @@
 // pages/takePhoto/takePhoto.js
 import { uploadFile } from "../../utils/upload";
-
+import { checkToken } from "../../utils/utils";
 import { postApi, getApi } from "../../apis/api";
 Page({
   /**
@@ -137,6 +137,7 @@ Page({
    * 搜索码头服务
    */
   searchTerminalServices() {
+    if (!checkToken()) return;
     this.getTerminalServices(this.data.terminalSearchWords);
   },
 
@@ -254,6 +255,7 @@ Page({
    * 搜索货盘列表
    */
   searchPalletList() {
+    if (!checkToken()) return;
     this.getPalletList(this.data.palletListSearchWords);
   },
 
@@ -276,18 +278,9 @@ Page({
       }
     } catch (error) {}
   },
-  checkToken() {
-    if (!wx.getStorageSync("accessToken")) {
-      wx.showToast({
-        title: "尚未登录,正在体验",
-        icon: "none",
-      });
-      return false;
-    }
-    return true;
-  },
+
   async onSignIn() {
-    if (!this.checkToken()) return;
+    if (!checkToken()) return;
     if (this.data.checkinStatus == 1) return;
     if (this.data.locked) {
       wx.showLoading({
@@ -325,7 +318,7 @@ Page({
   },
 
   async takePhoto(e) {
-    if (!this.checkToken()) return;
+    if (!checkToken()) return;
     if (this.data.locked) {
       wx.showLoading({
         title: "高精度定位中...",
@@ -506,7 +499,7 @@ Page({
     });
   },
   takeBill() {
-    if (!this.checkToken()) return;
+    if (!checkToken()) return;
     if (this.data.locked) return;
     wx.redirectTo({
       url: "/pages/takeBill/takeBill",

+ 14 - 2
miniprogram/utils/utils.js

@@ -4,6 +4,18 @@ function isImage(url) {
   return imgArr.indexOf(url.substring(lastIndex + 1, url.length)) != -1;
 }
 
+function checkToken(title = "尚未登录,正在体验") {
+  if (!wx.getStorageSync("accessToken")) {
+    wx.showToast({
+      title,
+      icon: "none",
+    });
+    return false;
+  }
+  return true;
+}
+
 module.exports = {
-  isImage
-}
+  isImage,
+  checkToken,
+};