From 19804e37592d2250c551fcf5df1d87cdf551f1d1 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期一, 12 八月 2024 09:06:39 +0800
Subject: [PATCH] 添加识别二维码切换地址的功能

---
 pages/home/home.js                 |   67 ++++++++++++
 pages/waterIntake/waterIntake.json |    2 
 pages/waterIntake/waterIntake.wxss |   20 +++
 pages/waterIntake/waterIntake.js   |   79 ++++++++++++---
 pages/waterIntake/waterIntake.wxml |   50 +++------
 pages/home/home.wxml               |   11 +
 pages/home/home.wxss               |   39 ++++++-
 7 files changed, 204 insertions(+), 64 deletions(-)

diff --git a/pages/home/home.js b/pages/home/home.js
index 5c6dad9..dabd0d4 100644
--- a/pages/home/home.js
+++ b/pages/home/home.js
@@ -26,6 +26,8 @@
     confirmBtn: {
       content: '纭'
     },
+    errorDialogTitle: "鍏抽榾閿欒",
+    showForceConfirm: false //鏄惁寮哄埗寮�闃�
   },
 
   openValve: function (e) {
@@ -192,7 +194,16 @@
     });
   },
   closeDialog() {
+    console.log("closeDialog");
     this.setData({
+      showConfirm: false,
+      showErrorDialog: false,
+      showForceConfirm: false
+    });
+  },
+  cancelDialog(){
+    this.setData({
+      showForceConfirm: false,
       showConfirm: false
     });
   },
@@ -236,7 +247,8 @@
       wx.hideLoading();
       this.setData({
         showErrorDialog: true,
-        errorData: error.msg
+        errorData: error.msg,
+        errorDialogTitle: "鍏抽榾閿欒"
       })
       // 澶勭悊閿欒鍝嶅簲
       console.error('璇锋眰澶辫触:', error);
@@ -320,18 +332,65 @@
       showErrorDialog: false
     })
   },
+  /**
+   * 鎵爜寮�闃�
+   */
   scenCode() {
+    const that = this;
     wx.scanCode({
       success(res) {
         console.log(res.result); // 褰撲笖浠呭綋鎵爜涓洪潪寰俊浜岀淮鐮佹椂锛屼細杩斿洖result  
-        // 濡傛灉鎵爜缁撴灉涓篣RL锛屼細鑷姩灏濊瘯鎵撳紑  
-        // 濡傛灉鎵爜缁撴灉涓哄井淇″皬绋嬪簭鐨勭爜锛屼細鐩存帴璺宠浆鍒板搴旂殑灏忕▼搴忛〉闈�  
-        // 濡傛灉鎵爜缁撴灉涓哄叕浼楀彿浜岀淮鐮侊紝鍒欎細鍦ㄦ墜鏈轰笂鎵撳紑寰俊骞惰烦杞埌瀵瑰簲鐨勫叕浼楀彿  
+        wx.showLoading({
+          title: '姝e湪寮�闃�璇风◢鍊�...', // 鍔犺浇鎻愮ず鏂囧瓧
+          mask: true // 鏄惁鏄剧ず閫忔槑钂欏眰锛岄槻姝㈣Е鎽哥┛閫忥紝榛樿涓� false
+        });
+        const app = getApp();
+        const data = {
+          intakeName: res.result, //鍙栨按鍙D
+          // vcId: vcId, //铏氭嫙鍗D
+          operator: app.globalData.sessionId //鎿嶄綔鍛�
+        };
+        post({
+          url: "wx/valve/open_wx",
+          data: data,
+          timeout: 180000
+        }).then(response => {
+
+          // 澶勭悊鎴愬姛鍝嶅簲
+          console.log('璇锋眰鎴愬姛:', response);
+          // 鍔犺浇瀹屾垚鍚庨殣钘忓姞杞藉姩鐢�
+          wx.hideLoading();
+          //瀹屾垚鍚庡洖鍒伴椤�
+          wx.reLaunch({
+            url: '/pages/home/home?param=true' // 棣栭〉鐨勮矾寰勶紝鏍规嵁瀹為檯鎯呭喌濉啓
+          });
+        }).catch(error => {
+          // 鍔犺浇瀹屾垚鍚庨殣钘忓姞杞藉姩鐢�
+          wx.hideLoading();
+          // 澶勭悊閿欒鍝嶅簲
+          console.error('璇锋眰澶辫触:', error);
+          if (error.code==="1003") {
+            that.setData({
+              showForceConfirm:true
+            })
+          } else {
+            that.setData({
+              showErrorDialog: true,
+              errorData: error.msg,
+              errorDialogTitle: "寮�闃�閿欒"
+            })
+          }
+    
+
+        });
       },
       fail(err) {
         console.error(err);
       }
 
     })
+  },
+  confirmForceDialog(){
+    console.log("confirmForceDialog");
   }
 })
\ No newline at end of file
diff --git a/pages/home/home.wxml b/pages/home/home.wxml
index b4f283b..8120e82 100644
--- a/pages/home/home.wxml
+++ b/pages/home/home.wxml
@@ -12,7 +12,11 @@
         <text class="unbind" bind:tap="feedBack">瑙g粦</text>
         <text class="head-bottom" bind:tap="feedBack">鑱旂郴瀹㈡湇</text>
       </view>
-      <image class="scen-code" src="/images/scen_code.svg" bind:tap="scenCode"/>
+      <view class="scen-view" bind:tap="scenCode">
+        <image class="scen-code" src="/images/scen_code.svg" />
+        <text>鎵爜寮�闃�</text>
+      </view>
+
     </view>
   </view>
 
@@ -67,7 +71,8 @@
     </view>
   </scroll-view>
 
-  <t-dialog class="dialog" visible="{{showConfirm}}" content="纭鍏抽棴{{waterIntakeName}}鍚楋紵" confirm-btn="{{ { content: '纭', variant: 'base', theme: 'danger' } }}" close-on-overlay-click="false" cancel-btn="鍙栨秷"  bind:confirm="confirmDialog" bind:cancel="closeDialog" />
-  <t-dialog class="error-dialog"  title="鍏抽榾閿欒" visible="{{showErrorDialog}}" content="{{errorData}}" confirm-btn="{{ confirmBtn }}" bind:confirm="closeDialog" />
+  <t-dialog class="dialog" visible="{{showConfirm}}" content="纭鍏抽棴{{waterIntakeName}}鍚楋紵" confirm-btn="{{ { content: '纭', variant: 'base', theme: 'danger' } }}" close-on-overlay-click="false" cancel-btn="鍙栨秷" bind:confirm="confirmDialog" bind:cancel="cancelDialog" />
+  <t-dialog class="error-dialog" title="{{errorDialogTitle}}" visible="{{showErrorDialog}}" content="{{errorData}}" confirm-btn="{{ confirmBtn }}" bind:confirm="closeDialog" />
+  <t-dialog visible="{{showForceConfirm}}" content="褰撳墠铏氭嫙鍗¤鍗犵敤锛屾槸鍚﹀己鍒跺紑闃�锛�" confirm-btn="{{ { content: '寮哄埗寮�闃�', variant: 'base', theme: 'danger' } }}" cancel-btn="鍙栨秷" bind:confirm="confirmForceDialog" bind:cancel="cancelDialog" />
 
 </view>
\ No newline at end of file
diff --git a/pages/home/home.wxss b/pages/home/home.wxss
index ee43aa4..0a918b8 100644
--- a/pages/home/home.wxss
+++ b/pages/home/home.wxss
@@ -217,9 +217,14 @@
   padding-left: 25rpx;
   padding-right: 25rpx;
   padding-top: 15rpx;
+  display: flex;
+  align-items: center;
+  justify-content: center;
   padding-bottom: 15rpx;
 }
-
+.refresh-button:active{
+  background-color: #7c7c7c; /* Change to a darker color when pressed */
+}
 .refresh-view {
   text-align: center;
   padding: 30rpx;
@@ -311,6 +316,10 @@
   justify-content: center;
 }
 
+.item-button:active {
+  background-color: #7c7c7c; /* Change to a darker color when pressed */
+}
+
 .divider {
   width: 100%;
   margin-top: 2rpx;
@@ -318,16 +327,30 @@
 }
 
 
-.error-dialog{
-  --td-dialog-title-color:red;
-  --td-dialog-title-font-size:40rpx;
+.error-dialog {
+  --td-dialog-title-color: red;
+  --td-dialog-title-font-size: 40rpx;
 }
 
-.scen-code{
+.scen-view {
+  position: absolute;
+  /* 娣诲姞杩欒 */
+  top: 15rpx;
+  /* 鏍规嵁闇�瑕佽皟鏁磋窛绂婚《閮ㄧ殑璺濈 */
+  right: 30rpx;
+  /* 鏍规嵁闇�瑕佽皟鏁磋窛绂诲彸渚х殑璺濈 */
+  display: flex;
+  align-items: center;
+  /* 鍨傜洿鏂瑰悜灞呬腑 */
+  justify-content: space-between;
+}
+
+.scen-code {
   width: 40rpx;
   height: 40rpx;
-  position: absolute; /* 娣诲姞杩欒 */
-  top: 15rpx; /* 鏍规嵁闇�瑕佽皟鏁磋窛绂婚《閮ㄧ殑璺濈 */
-  right: 30rpx; /* 鏍规嵁闇�瑕佽皟鏁磋窛绂诲彸渚х殑璺濈 */
+}
 
+.scen-view text {
+  font-size: 30rpx;
+  color: #ffffff;
 }
\ No newline at end of file
diff --git a/pages/waterIntake/waterIntake.js b/pages/waterIntake/waterIntake.js
index 68f5a3c..de10bb5 100644
--- a/pages/waterIntake/waterIntake.js
+++ b/pages/waterIntake/waterIntake.js
@@ -9,6 +9,11 @@
     searchQuery: "",
     commonWaterPoints: [], // 甯哥敤鍙栨按鍙f暟鎹�
     allWaterPoints: [], // 鎵�鏈夊彇姘村彛鏁版嵁
+    searchData: [{
+      intakeNum: "1111111"
+    }, {
+      intakeNum: "2222222"
+    }],
     isRefreshing_all: false,
     isRefreshing_common: false,
     showConfirm: false,
@@ -19,6 +24,9 @@
     confirmBtn: {
       content: '纭'
     },
+    showForceConfirm: false,
+    forceIntakeId: "", //寮哄埗寮�闃�鐨勫彇姘村彛id
+    inputValue:""
   },
 
   // 鍒囨崲 Tabs
@@ -39,7 +47,9 @@
       this.getallWaterPoints(query)
       // 鍦ㄨ繖閲岃繘琛屾悳绱㈡搷浣滐紝鏇存柊 allWaterPoints 鏁版嵁
     } else {
-      this.getallWaterPoints(query)
+      this.setData({
+        allWaterPoints: []
+      })
     }
   },
 
@@ -48,9 +58,11 @@
    * @param {} event 
    */
   choseCard(event) {
+    //鏄剧ず浜屾纭寮圭獥
     this.setData({
       showConfirm: true,
-      choseItem: event.currentTarget.dataset.item
+      choseItem: event.currentTarget.dataset.item,
+      allWaterPoints: []
     })
     //  console.log(intakeId);
     //   wx.navigateTo({
@@ -59,7 +71,16 @@
 
   },
   //寮�娉甸�氫俊
-  postOpenValva(intakeId) {
+  /**
+   * 
+   * @param {*} intakeId 鍙栨按鍙d
+   * @param {*} isforce 鏄惁寮哄埗寮�闃�
+   */
+  postOpenValva(intakeId, isforce) {
+    this.setData({
+      inputValue:""
+    })
+    console.log("intakeId:" + intakeId + "   isforce:" + isforce)
     wx.showLoading({
       title: '姝e湪寮�闃�璇风◢鍊�...', // 鍔犺浇鎻愮ず鏂囧瓧
       mask: true // 鏄惁鏄剧ず閫忔槑钂欏眰锛岄槻姝㈣Е鎽哥┛閫忥紝榛樿涓� false
@@ -68,7 +89,8 @@
     const data = {
       intakeId: intakeId, //鍙栨按鍙D
       // vcId: vcId, //铏氭嫙鍗D
-      operator: app.globalData.sessionId //鎿嶄綔鍛�
+      operator: app.globalData.sessionId, //鎿嶄綔鍛�
+      forceOpen: !!isforce // 浣跨敤閫昏緫闈炴搷浣滅 !! 鏉ョ‘淇� isForce 鏄竷灏斿��  
     };
     post({
       url: "wx/valve/open_wx",
@@ -90,12 +112,17 @@
       wx.hideLoading();
       // 澶勭悊閿欒鍝嶅簲
       console.error('璇锋眰澶辫触:', error);
-
-      this.setData({
-        showErrorDialog: true,
-        errorData: error.msg
-      })
-
+      if (error.code === "10005") {
+        this.setData({
+          forceIntakeId: intakeId,
+          showForceConfirm: true
+        })
+      } else {
+        this.setData({
+          showErrorDialog: true,
+          errorData: error.msg
+        })
+      }
     });
   },
 
@@ -110,7 +137,6 @@
    * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍒濇娓叉煋瀹屾垚
    */
   onReady() {
-    this.getallWaterPoints();
     this.getcommonWaterPoints();
   },
 
@@ -152,7 +178,7 @@
 
   },
   /**
-   * 鑾峰彇鎵�鏈夊彇姘村彛
+   *鍦ㄦ墍鏈夊彇姘村彛鎼滅储
    */
   getallWaterPoints: function (intakeNum) {
     let params = {
@@ -169,9 +195,17 @@
           isRefreshing_all: false
         });
         if (data.success && data.code === "0001") {
-          this.setData({
-            allWaterPoints: data.content.obj
-          });
+          if (!data.content) {
+            wx.showToast({
+              title: '娌℃湁鎼滅储鍒板彇姘村彛',
+              icon: 'error',
+            })
+          }else{
+            this.setData({
+              allWaterPoints:[data.content]
+            });
+          }
+        
         } else {
           wx.showToast({
             title: data.msg,
@@ -250,5 +284,20 @@
     this.setData({
       showErrorDialog: false
     })
+  },
+  cancelDialog() {
+    this.setData({
+      showForceConfirm: false
+    });
+  },
+  //寮哄埗寮�闃�
+  confirmForceDialog() {
+    this.postOpenValva(this.data.forceIntakeId, true);
+  },
+  closeSearch(){
+    this.setData({
+      allWaterPoints:[],
+      inputValue:""
+    })
   }
 })
\ No newline at end of file
diff --git a/pages/waterIntake/waterIntake.json b/pages/waterIntake/waterIntake.json
index 1bfc009..5d12b46 100644
--- a/pages/waterIntake/waterIntake.json
+++ b/pages/waterIntake/waterIntake.json
@@ -6,7 +6,7 @@
     "t-button": "tdesign-miniprogram/button/button",
     "t-dialog": "tdesign-miniprogram/dialog/dialog"
   },
-  "navigationBarTitleText": "鍙栨按鍙�",
+  "navigationBarTitleText": "甯哥敤鍙栨按鍙�",
   "navigationBarTextStyle": "white"
   
 }
\ No newline at end of file
diff --git a/pages/waterIntake/waterIntake.wxml b/pages/waterIntake/waterIntake.wxml
index e433296..bc6680e 100644
--- a/pages/waterIntake/waterIntake.wxml
+++ b/pages/waterIntake/waterIntake.wxml
@@ -1,41 +1,23 @@
 <view class="container">
-  <!-- 椤堕儴 Tabs -->
-  <view class="tabs">
-    <view class="tab" bindtap="switchTab" data-tab="0" id="tab0">
-      甯哥敤鍙栨按鍙�
-      <view class="indicator" wx:if="{{currentTab === 0}}"></view>
-    </view>
-    <view class="tab" bindtap="switchTab" data-tab="1" id="tab1">
-      鎵�鏈夊彇姘村彛
-      <view class="indicator" wx:if="{{currentTab === 1}}"></view>
-    </view>
-  </view>
 
-  <!-- 甯哥敤鍙栨按鍙� -->
-  <scroll-view class="list-container" wx:if="{{currentTab === 0}}" scroll-y="true" refresher-enabled="true" refresher-threshold="50" bindrefresherrefresh="onPullDownRefresh_common" refresher-triggered="{{isRefreshing_common}}">
-    <block wx:for="{{commonWaterPoints}}" wx:key="index">
-      <view class="item">
-        <view class="item-left">
-          <text>{{item.intakeNum}}</text>
-          <image class="item-img" src="{{item.isOnLine ? '/images/wifi_no.svg' : '/images/wifi_off.svg'}}" />
-        </view>
-        <text  class="item-button" bindtap="choseCard" data-item="{{item}}">寮�闃�</text>
-      </view>
-    </block>
-    <view wx:if="{{commonWaterPoints.length === 0}}" class="noMore-View">
-      <image class="noMore-img" src="/images/no_more.svg" />
-      <text class="noMore-text">娌℃湁鏁版嵁</text>
-    </view>
-  </scroll-view>
 
-  <!-- 鎵�鏈夊彇姘村彛 -->
-  <view class="all-waterIntake" wx:if="{{currentTab === 1}}">
+
+
+
+  <view class="all-waterIntake" wx:if="{{currentTab === 0}}">
     <view class="search-container">
-      <input class="search-input" placeholder="璇疯緭鍏ュ彇姘村彛缂栫爜鍚庣偣鍑绘悳绱�" bindinput="onInput" />
+      <input class="search-input" value="{{inputValue}}" placeholder="璇疯緭鍏ュ彇姘村彛缂栫爜鍚庣偣鍑绘悳绱�" bindinput="onInput" />
       <t-button class="search-button" theme="primary" size="large" icon="search" shape="square" aria-label="鎼滅储" bindtap="onSearch" style="background-color: #1890FF; border: none; height: 80rpx;"></t-button>
     </view>
-    <scroll-view class="list-container" scroll-y="true" refresher-enabled="true" refresher-threshold="50" bindrefresherrefresh="onPullDownRefresh_all" refresher-triggered="{{isRefreshing_all}}">
+    <view class="search-results" wx:if="{{allWaterPoints.length > 0}}" bindtap="closeSearch">
       <block wx:for="{{allWaterPoints}}" wx:key="index">
+        <view class="result-item" bindtap="choseCard"  data-item="{{item}}">
+          <text>{{item.intakeNum}}</text>
+        </view>
+      </block>
+    </view>
+    <scroll-view class="list-container" scroll-y="true" refresher-enabled="true" refresher-threshold="50" bindrefresherrefresh="onPullDownRefresh_common" refresher-triggered="{{isRefreshing_common}}">
+      <block wx:for="{{commonWaterPoints}}" wx:key="index">
         <view class="item">
           <view class="item-left">
             <text>{{item.intakeNum}}</text>
@@ -44,7 +26,7 @@
           <text  class="item-button" bindtap="choseCard" data-item="{{item}}">寮�闃�</text>
         </view>
       </block>
-      <view wx:if="{{allWaterPoints.length === 0}}" class="noMore-View">
+      <view wx:if="{{commonWaterPoints.length === 0}}" class="noMore-View">
         <image class="noMore-img" src="/images/no_more.svg" />
         <text class="noMore-text">娌℃湁鏁版嵁</text>
       </view>
@@ -54,4 +36,8 @@
   <t-dialog class="dialog" visible="{{showConfirm}}" content="纭鎵撳紑{{choseItem.intakeNum}}鍚楋紵" confirm-btn="{{ { content: '纭', variant: 'base', theme: 'danger' } }}" close-on-overlay-click="false" cancel-btn="鍙栨秷"  bind:confirm="confirmDialog" bind:cancel="closeDialog" />
 
   <t-dialog class="error-dialog"  title="寮�闃�閿欒" visible="{{showErrorDialog}}" content="{{errorData}}" confirm-btn="{{ confirmBtn }}" bind:confirm="closeErrorDialog" />
+
+  <t-dialog visible="{{showForceConfirm}}" content="褰撳墠铏氭嫙鍗¤鍗犵敤锛屾槸鍚﹀己鍒跺紑闃�锛�" confirm-btn="{{ { content: '寮哄埗寮�闃�', variant: 'base', theme: 'danger' } }}" cancel-btn="鍙栨秷" bind:confirm="confirmForceDialog" bind:cancel="cancelDialog" />
+
+
 </view>
diff --git a/pages/waterIntake/waterIntake.wxss b/pages/waterIntake/waterIntake.wxss
index 519475c..56c304a 100644
--- a/pages/waterIntake/waterIntake.wxss
+++ b/pages/waterIntake/waterIntake.wxss
@@ -68,7 +68,9 @@
   align-items: center;
   justify-content: center;
 }
-
+.item-button:active {
+  background-color: #7c7c7c; /* Change to a darker color when pressed */
+}
 .indicator {
   width: 100%;
   height: 3px;
@@ -143,4 +145,20 @@
 .error-dialog{
   --td-dialog-title-color:red;
   --td-dialog-title-font-size:45rpx;
+}
+
+.search-results {
+  position: absolute;
+  top: 100rpx; /* 鏍规嵁鎼滅储妗嗙殑楂樺害璋冩暣 */
+  left: 30rpx;
+  right: 30rpx;
+  bottom: 0;
+  background-color: rgba(255, 255, 255, 0.90); /* 璁剧疆鐧借壊鑳屾櫙 */
+  z-index: 1;
+  overflow-y: auto;
+}
+
+.result-item {
+  padding: 20rpx;
+  border-bottom: 1px solid #eaeaea;
 }
\ No newline at end of file

--
Gitblit v1.8.0