From 7d1f18053bb7d0bdd55a38f44b0979615d00936b Mon Sep 17 00:00:00 2001
From: zuoxiao <zuoxiao>
Date: 星期二, 02 九月 2025 13:46:45 +0800
Subject: [PATCH] 更新首页,新增模型计算功能并添加登录检查逻辑;修改app.json以包含新页面配置;更新项目配置以支持大包体积;优化样式以提升用户体验。

---
 pages/home/home.wxss |  823 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 784 insertions(+), 39 deletions(-)

diff --git a/pages/home/home.wxss b/pages/home/home.wxss
index 3e06c83..24f006c 100644
--- a/pages/home/home.wxss
+++ b/pages/home/home.wxss
@@ -1,6 +1,6 @@
 /* pages/home/home.wxss */
 .base-wrapper {
-  background-color: #f5f5f5;
+  background-color: #ececec;
   width: 100%;
   height: 100vh;
   overflow: hidden;
@@ -11,19 +11,20 @@
 
 .head-wrapper {
   background-color: #1890FF;
-  height: 30vh;
+  height: 20vh;
+  width: 100%;
   padding-left: 40rpx;
   display: grid;
   flex-direction: column;
   align-items: center;
-
   border-bottom-left-radius: 5rpx;
   border-bottom-right-radius: 5rpx;
   z-index: 1;
+  border-top: 1px solid #0484fc;
+
 }
 
 .head-top {
-  margin-top: 40rpx;
   display: flex;
   align-items: center;
   /* 鍦ㄧ旱鍚戞柟鍚戜笂灞呬腑瀵归綈 */
@@ -31,14 +32,52 @@
 
 
 .head-text-wrapper {
+  flex: 1;
   display: flex;
   flex-direction: column;
-  margin-left: 30rpx;
+  align-items: left;
+  justify-content: center;
+  margin-left: 15rpx;
+  margin-bottom: 70rpx;
+}
+
+.head-button-wrapper {
+  flex: 1;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: center;
+  margin-left: 15rpx;
+}
+
+
+.head-bottom {
+  margin-top: 20rpx;
+  color: #fff;
+  font-size: 35rpx;
+}
+
+.unbind {
+  font-size: 30rpx;
+  /* 鎸夐挳鏂囧瓧鐨勫瓧浣撳ぇ灏� */
+  color: #1890FF;
+  /* 鎸夐挳鏂囧瓧棰滆壊 */
+  background-color: #fff;
+  /* 鎸夐挳鑳屾櫙棰滆壊 */
+  border: none;
+  /* 鍘绘帀鎸夐挳杈规 */
+  border-radius: 20px;
+  /* 鎸夐挳鍦嗚 */
+  padding-left: 20rpx;
+  padding-right: 20rpx;
+  padding-top: 5rpx;
+  padding-bottom: 5rpx;
+  margin-bottom: 10rpx;
 }
 
 .head-text-wrapper text {
-  margin-bottom: 10rpx;
   color: #fff;
+  font-size: 32rpx;
 }
 
 .balance-label {
@@ -48,35 +87,113 @@
 }
 
 .center-wrapper {
-  margin-top: -40rpx;
-  margin-right: 20rpx;
-  margin-left: 20rpx;
-  margin-bottom: 10rpx;
-  height: 18vh;
+  margin: -40rpx 20rpx 10rpx 20rpx;
+  padding: 40rpx 30rpx;
   background-color: #fff;
-  border-radius: 5px;
-  display: flex;
-  padding-top: 20rpx;
-  padding-bottom: 20rpx;
-  justify-content: space-around;
+  border-radius: 16rpx;
+  box-shadow: 0 8rpx 32rpx rgba(0, 0, 0, 0.08);
   z-index: 1;
-  /* 浣� center-wrapper 鍦ㄥご閮ㄤ箣涓� */
+  position: relative;
 }
 
-.center-view {
+.center-grid {
+  display: grid;
+  grid-template-columns: repeat(4, 1fr);
+  gap: 10rpx;
+  align-items: stretch;
+}
+
+.grid-item {
   display: flex;
   flex-direction: column;
-  /* 鍦ㄧ旱鍚戜笂鎺掑垪瀛愬厓绱� */
   align-items: center;
-  /* 鍦ㄧ旱鍚戜笂灞呬腑鏄剧ず瀛愬厓绱� */
-  justify-content: center;
-  /* 鍦ㄦí鍚戝拰绾靛悜涓婇兘灞呬腑鏄剧ず瀛愬厓绱� */
+  justify-content: flex-start;
+  padding: 10rpx 10rpx;
+  border-radius: 12rpx;
+  transition: all 0.3s ease;
+  cursor: pointer;
+  height: 140rpx;
+  box-sizing: border-box;
 }
 
-.center-view text {
-  margin-top: 15rpx;
-  font-size: 30rpx;
+.grid-item:active {
+  transform: scale(0.95);
+  background-color: #f8f9fa;
 }
+
+.grid-item-wide {
+  grid-column: span 2;
+  background: linear-gradient(135deg, #f0f8ff 0%, #e6f3ff 100%);
+  border: 1rpx solid #e1f0ff;
+}
+
+.item-icon {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  width: 80rpx;
+  height: 80rpx;
+  margin-bottom: 16rpx;
+  border-radius: 50%;
+  background: linear-gradient(135deg, #1890FF 0%, #40a9ff 100%);
+  box-shadow: 0 4rpx 16rpx rgba(24, 144, 255, 0.3);
+  flex-shrink: 0;
+}
+
+.item-icon image {
+  width: 40rpx;
+  height: 40rpx;
+  filter: brightness(0) invert(1);
+}
+
+.item-text {
+  font-size: 23rpx;
+  color: #333;
+  font-weight: 500;
+  text-align: center;
+  line-height: 1.4;
+  max-width: 100%;
+  word-break: break-word;
+  flex: 1;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  min-height: 0;
+}
+
+/* 鍝嶅簲寮忚璁� */
+@media (max-width: 750rpx) {
+  .center-grid {
+    grid-template-columns: repeat(2, 1fr);
+    gap: 16rpx;
+  }
+  
+  .grid-item-wide {
+    grid-column: span 2;
+  }
+  
+  .grid-item {
+    height: 140rpx;
+    padding: 16rpx 8rpx;
+  }
+  
+  .item-icon {
+    width: 70rpx;
+    height: 70rpx;
+    margin-bottom: 12rpx;
+  }
+  
+  .item-icon image {
+    width: 36rpx;
+    height: 36rpx;
+  }
+  
+  .item-text {
+    font-size: 26rpx;
+  }
+}
+
+
 
 .bottom-wrapper {
   margin-right: 20rpx;
@@ -92,31 +209,177 @@
   /* 鍏佽鍨傜洿婊氬姩 */
   z-index: 0;
   /* 纭繚 scroll-view 鍦ㄥご閮ㄥ拰 center-wrapper 涔嬩笅 */
+  background-color: #f5f5f5;
+  margin-top: 0;
+  padding-top: 0;
+  box-sizing: border-box;
 }
 
+.scroll-bg {
+  padding: 20rpx 0;
+  box-sizing: border-box;
+  padding-top: 0;
+  width: 100%;
+}
 
+/* 纭繚鎵�鏈夊惈瀹藉害鐨勫厓绱犱娇鐢ㄧ浉鍚岀殑璁$畻鏂瑰紡 */
+.bottom-title,
+.scroll-bg>view {
+  width: calc(100% - 40rpx);
+  margin-left: 20rpx;
+  margin-right: 20rpx;
+  box-sizing: border-box;
+}
+
+.scroll-bg>view {
+  margin-bottom: 20rpx;
+  border-radius: 12rpx;
+  overflow: hidden;
+  box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.05);
+}
+
+t-swipe-cell {
+  display: block;
+  width: 100%;
+  border-radius: 12rpx;
+  overflow: hidden;
+}
+
+.swipe-cell {
+  display: flex;
+  justify-content: space-between;
+  background-color: #fff;
+  width: 100%;
+  height: 100%;
+  border-radius: 12rpx;
+  overflow: hidden;
+}
 
 .list-item {
   background-color: #fff;
-  margin-top: 10rpx;
   display: flex;
-  justify-content: space-between;
   align-items: center;
-  padding-left: 30rpx;
-  padding-right: 30rpx;
-  padding-top: 20rpx;
-  padding-bottom: 20rpx;
+  padding: 30rpx;
+  width: 100%;
+  box-sizing: border-box;
+}
 
+.item-left {
+  display: flex;
+  flex-direction: column;
+  flex: 1;
+  width: 100%;
+}
+
+.left-intake-name {
+  width: 100%;
+  display: flex;
+  align-items: center;
+  margin-bottom: 20rpx;
+  padding-left: 4rpx;
+}
+
+.item-img-left {
+  width: 40rpx;
+  height: 40rpx;
+  flex-shrink: 0;
+}
+
+.item-img {
+  width: 40rpx;
+  height: 40rpx;
+  flex-shrink: 0;
+}
+
+.left-intake-name .item-img {
+  margin-left: 8rpx;
+}
+
+.water-intake-name {
+  font-size: 42rpx !important;
+  margin-left: 16rpx;
+  margin-right: 15rpx;
+  white-space: nowrap;
+  /* 闃叉鏂囨湰鎹㈣ */
+  font-weight: 500;
+  color: #333;
+  flex-shrink: 0;
+}
+
+.left-time {
+  width: 100%;
+  display: flex;
+  align-items: center;
+  color: #666;
+  flex-wrap: nowrap;
+  overflow: hidden;
+  padding-right: 10rpx;
+  padding-left: 4rpx;
+}
+
+.flow-time {
+  font-size: 28rpx !important;
+  margin-left: 16rpx;
+  margin-right: 2rpx;
+  white-space: nowrap;
+  color: #666;
+  display: inline-block;
+}
+
+.flow-rate {
+  font-size: 28rpx !important;
+  margin-left: 6rpx;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  flex: 1;
+  color: #666;
+}
+
+.item-right {
+  display: flex;
+  align-items: center;
+  margin-left: 20rpx;
+}
+
+.item-button {
+  display: flex;
+  height: 70rpx;
+  padding: 0 40rpx;
+  background-color: #1890FF;
+  color: white;
+  border: none;
+  border-radius: 35rpx;
+  font-size: 30rpx !important;
+  align-items: center;
+  justify-content: center;
+  white-space: nowrap;
+  /* 纭繚鏂囧瓧涓嶆崲琛� */
+  box-shadow: 0 4rpx 8rpx rgba(24, 144, 255, 0.2);
+  transition: all 0.3s;
+}
+
+.item-button:active {
+  background-color: #1378d8;
+  transform: scale(0.98);
+}
+
+.delete-btn {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  width: 140rpx;
+  height: 100%;
+  color: white;
+  background-color: #e34d59;
+  font-size: 30rpx;
 }
 
 .list-item text {
   font-size: 30rpx;
 }
 
-.list-item image {
-  width: 80rpx;
-  height: 80rpx;
-}
+
 
 .list-item-piping {
   display: flex;
@@ -125,9 +388,491 @@
 }
 
 .bottom-title {
-  border-radius: 5px 5px 0 0;
+  border-radius: 12rpx 12rpx 0 0;
   background-color: #fff;
-  padding-left: 30rpx;
-  padding-top: 30rpx;
-  padding-bottom: 30rpx;
+  display: flex;
+  align-items: center;
+  /* 鍨傜洿鏂瑰悜灞呬腑 */
+  justify-content: space-between;
+  /* 瀛愬厓绱犲湪涓昏酱涓婄殑瀵归綈鏂瑰紡 */
+  padding: 30rpx;
+  /* 瀹瑰櫒鐨勫唴杈硅窛 */
+  width: calc(100% - 40rpx);
+  margin-left: 20rpx;
+  margin-right: 20rpx;
+  margin-top: 20rpx;
+  margin-bottom: 0;
+  box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.03);
+  position: relative;
+  box-sizing: border-box;
+  border-bottom: 1rpx solid #e7e7e7;
+}
+
+.bottom-title-text {
+  margin-right: 10rpx;
+  /* 缁欐枃鏈拰鍥炬爣涔嬮棿娣诲姞涓�浜涢棿璺� */
+  font-size: 34rpx;
+  /* 瀛椾綋澶у皬 */
+  color: #333;
+  /* 瀛椾綋棰滆壊 */
+  font-weight: 500;
+}
+
+.refresh-button {
+  margin-left: auto;
+  /* 灏嗘寜閽帹鍒板鍣ㄧ殑鏈�鍙充晶 */
+  font-size: 28rpx;
+  /* 鎸夐挳鏂囧瓧鐨勫瓧浣撳ぇ灏� */
+  color: #fff;
+  /* 鎸夐挳鏂囧瓧棰滆壊 */
+  background-color: #1890FF;
+  /* 鎸夐挳鑳屾櫙棰滆壊 */
+  border: none;
+  /* 鍘绘帀鎸夐挳杈规 */
+  border-radius: 30rpx;
+  /* 鎸夐挳鍦嗚 */
+  padding: 15rpx 30rpx;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  box-shadow: 0 4rpx 8rpx rgba(24, 144, 255, 0.2);
+  transition: all 0.3s;
+}
+
+.refresh-button:active {
+  background-color: #1378d8;
+  transform: scale(0.98);
+}
+
+.refresh-view {
+  text-align: center;
+  padding: 40rpx;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+
+.dot {
+  width: 16rpx;
+  height: 16rpx;
+  background-color: #1890FF;
+  border-radius: 50%;
+  margin: 0 8rpx;
+  animation: blink 1.4s infinite both;
+  opacity: 0.7;
+}
+
+.dot:nth-child(2) {
+  animation-delay: 0.2s;
+}
+
+.dot:nth-child(3) {
+  animation-delay: 0.4s;
+}
+
+@keyframes blink {
+  0% {
+    opacity: 0.2;
+    transform: scale(0.8);
+  }
+
+  50% {
+    opacity: 1;
+    transform: scale(1.2);
+  }
+
+  100% {
+    opacity: 0.2;
+    transform: scale(0.8);
+  }
+}
+
+.switch {
+  --td-switch-checked-color: #1890FF;
+}
+
+/* 淇敼閫夋嫨鍣紝浣垮叾涓嶄細褰卞搷flow-time */
+.item-left .water-intake-name {
+  min-width: 150rpx;
+}
+
+.dialog {
+  --td-dialog-content-font-size: 40rpx;
+  --td-dialog-content-line-height: 50rpx
+}
+
+.noMore-View-home {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: center;
+  margin-top: 80rpx;
+  padding: 40rpx;
+}
+
+.noMore-img {
+  width: 200rpx;
+  height: 200rpx;
+  margin-bottom: 20rpx;
+  opacity: 0.7;
+}
+
+.noMore-text {
+  font-size: 32rpx;
+  color: #999;
+}
+
+.error-dialog {
+  --td-dialog-title-color: red;
+  --td-dialog-title-font-size: 40rpx;
+}
+
+.scen-view {
+  position: absolute;
+  /* 娣诲姞杩欒 */
+  top: 15rpx;
+  /* 鏍规嵁闇�瑕佽皟鏁磋窛绂婚《閮ㄧ殑璺濈 */
+  right: 30rpx;
+  /* 鏍规嵁闇�瑕佽皟鏁磋窛绂诲彸渚х殑璺濈 */
+  display: flex;
+  align-items: center;
+  /* 鍨傜洿鏂瑰悜灞呬腑 */
+  justify-content: space-between;
+}
+
+.scen-code {
+  width: 40rpx;
+  height: 40rpx;
+}
+
+.scen-view text {
+  font-size: 30rpx;
+  color: #ffffff;
+}
+
+.project-select-container {
+  padding: 20rpx 0;
+}
+
+.project-select-container .t-radio {
+  margin-bottom: 20rpx;
+  padding: 10rpx 0;
+}
+
+.project-select-container .t-radio:last-child {
+  margin-bottom: 0;
+}
+
+.project-select-container .t-radio__label {
+  font-size: 28rpx;
+  color: #333;
+}
+
+.project-select-container .t-radio--checked {
+  background: #e6f4ff;
+}
+
+/* 寮圭獥鎸夐挳鏍峰紡 */
+.dialog__button-group {
+  display: flex;
+  justify-content: space-between;
+  margin-top: 32rpx;
+}
+
+.dialog__button-group .t-button {
+  flex: 1;
+  margin: 0 16rpx;
+}
+
+.dialog__button-group .t-button:first-child {
+  margin-left: 0;
+}
+
+.dialog__button-group .t-button:last-child {
+  margin-right: 0;
+}
+
+.project-select-popup {
+  background-color: #fff;
+  border-radius: 16rpx;
+  width: 600rpx;
+}
+
+.popup-title {
+  font-size: 32rpx;
+  font-weight: bold;
+  text-align: center;
+  padding: 32rpx;
+  border-bottom: 1px solid #f0f0f0;
+}
+
+.popup-content {
+  padding: 32rpx;
+}
+
+.radio-group {
+  display: flex;
+  flex-direction: column;
+  gap: 20rpx;
+}
+
+.radio-group .t-radio {
+  margin-bottom: 20rpx;
+  padding: 20rpx;
+  background: #f5f5f5;
+  border-radius: 8rpx;
+}
+
+.radio-group .t-radio:last-child {
+  margin-bottom: 0;
+}
+
+.popup-footer {
+  padding: 32rpx;
+  border-top: 1px solid #f0f0f0;
+}
+
+.dialog-content {
+  padding: 32rpx;
+  max-height: 60vh;
+}
+
+.project-options {
+  display: flex;
+  flex-direction: column;
+  gap: 20rpx;
+}
+
+.project-option {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  padding: 30rpx;
+  background: #f5f5f5;
+  border-radius: 8rpx;
+  font-size: 32rpx;
+}
+
+.project-option.selected {
+  background: #e6f4ff;
+  border: 2rpx solid #1890FF;
+}
+
+.selected-icon {
+  width: 40rpx;
+  height: 40rpx;
+}
+
+.project-dialog-content {
+  padding: 20rpx;
+}
+
+.project-item {
+  margin: 20rpx 0;
+  padding: 30rpx;
+  background-color: #f5f5f5;
+  border-radius: 8rpx;
+  text-align: center;
+  font-size: 32rpx;
+}
+
+.project-item-selected {
+  background-color: #e6f4ff;
+  color: #1890FF;
+  border: 2rpx solid #1890FF;
+}
+
+.radio-content {
+  padding: 30rpx 20rpx 10rpx;
+}
+
+.radio-content .t-radio {
+  margin-bottom: 20rpx;
+  padding: 20rpx;
+  background-color: #f5f5f5;
+  border-radius: 8rpx;
+}
+
+.radio-content .t-radio--checked {
+  background-color: #e6f4ff;
+}
+
+.project-modal {
+  position: fixed;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  z-index: 999;
+}
+
+.project-modal-mask {
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  background-color: rgba(0, 0, 0, 0.5);
+}
+
+.project-modal-content {
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  transform: translate(-50%, -50%);
+  width: 85%;
+  max-width: 600rpx;
+  background-color: #fff;
+  border-radius: 16rpx;
+  overflow: hidden;
+  display: flex;
+  flex-direction: column;
+}
+
+.project-modal-header {
+  padding: 24rpx;
+  text-align: center;
+  font-size: 32rpx;
+  font-weight: bold;
+  border-bottom: 1rpx solid #eee;
+}
+
+.project-modal-body {
+  padding: 0;
+  max-height: 60vh;
+}
+
+.project-scroll-view {
+  max-height: 55vh;
+  /* 绋嶅井鍑忓皬楂樺害锛岀‘淇濆湪灏忓睆骞曚笂涔熻兘鐪嬪埌搴曢儴鎸夐挳 */
+  height: auto;
+}
+
+.project-radio-group {
+  display: flex;
+  flex-direction: column;
+  width: 100%;
+}
+
+.project-radio {
+  padding: 24rpx;
+  display: flex;
+  align-items: center;
+  border-bottom: 1rpx solid #f5f5f5;
+  width: 100%;
+  box-sizing: border-box;
+}
+
+.project-radio radio {
+  margin-right: 16rpx;
+}
+
+.project-radio text {
+  font-size: 30rpx;
+  color: #333;
+}
+
+.project-radio-selected {
+  background-color: #f0f9ff;
+}
+
+.project-modal-footer {
+  padding: 24rpx;
+  border-top: 1rpx solid #eee;
+}
+
+.project-modal-btn {
+  background-color: #1890FF;
+  color: white;
+  border-radius: 8rpx;
+  font-size: 28rpx;
+  padding: 16rpx 0;
+}
+
+.project-modal-btn[disabled] {
+  background-color: #cccccc;
+  color: #666666;
+}
+
+.info-img {
+  width: 50rpx;
+  height: 50rpx;
+}
+
+.title-center {
+  position: absolute;
+  /* 缁濆瀹氫綅 */
+  left: 50%;
+  /* 绉诲姩鍒板鍣ㄧ殑涓棿 */
+  transform: translateX(-50%);
+  display: flex;
+  justify-content: space-between;
+  /* 浣垮瓙鍏冪礌鍦ㄤ富杞翠笂鍧囧寑鍒嗗竷 */
+  align-items: center;
+  /* 鍨傜洿灞呬腑瀵归綈 */
+}
+
+.content-container {
+  white-space: pre-line;
+  word-wrap: break-word;
+  /* 闃叉闀垮崟璇嶆棤娉曟崲琛� */
+}
+
+.long-content {
+  height: 500rpx;
+  margin-top: 16rpx;
+  font-size: 32rpx;
+  color: #888;
+}
+
+.current-project {
+  display: flex;
+  align-items: center;
+  margin-left: 20rpx;
+  margin-top: 10rpx;
+
+}
+
+.current-project text {
+  color: #fff;
+  font-size: 32rpx;
+  margin-right: 10rpx;
+}
+
+.switch-project {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  width: 40rpx;
+  height: 40rpx;
+  background-color: rgba(255, 255, 255, 0.2);
+  border-radius: 50%;
+  margin-left: 5rpx;
+}
+
+.switch-icon {
+  width: 24rpx;
+  height: 24rpx;
+}
+
+.avatar-project-container {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: center;
+}
+
+.current-project {
+  display: flex;
+  justify-content: center;
+  margin-bottom: 10rpx;
+}
+
+.current-project text {
+  font-size: 28rpx;
+  color: #ffffff;
+  font-weight: bold;
+  background-color: rgba(255, 255, 255, 0.2);
+  border-radius: 15rpx;
+  padding: 6rpx 14rpx;
 }
\ No newline at end of file

--
Gitblit v1.8.0