Explorar el Código

Merge branch 'zhongqi-delivery' of git.huaml.com:zhh/front-end into zhongqi-delivery

shizhongqi hace 7 meses
padre
commit
48e8989b6f

+ 146 - 23
ghsApp/src/admin/delivery/allDelivery.vue

@@ -63,13 +63,10 @@
       <TimePicker ref="timePicker" @confirm="handleTimeConfirm" />
       <view class="form-row">
         <view class="form-label">备注</view>
-        <input 
-          v-model="remark" 
-          type="text"
-          placeholder="填写备注信息" 
-          maxlength="200"
-          class="remark-input"
-        />
+        <view class="remark-action" @click="openRemarkModal">
+          <text :class="{ placeholder: !remark }">{{ remark || '请填写备注信息' }}</text>
+          <zui-svg-icon icon="general-arrow-right" :width="16" :height="16" color="#333" />
+        </view>
       </view>
     </view>
 
@@ -113,6 +110,28 @@
       </view>
     </view>
 
+    <!-- 备注输入弹窗 -->
+    <view class="remark-modal" v-if="showRemarkModal" @click="closeRemarkModal">
+      <view class="modal-content" @click.stop>
+        <view class="modal-header">
+          <text class="modal-title">填写备注信息</text>
+        </view>
+        <view class="modal-body">
+          <textarea 
+            v-model="tempRemark" 
+            placeholder="请输入备注信息" 
+            maxlength="200"
+            :auto-height="true"
+            class="remark-textarea"
+          />
+          <view class="char-count">{{ tempRemark.length }}/200</view>
+        </view>
+        <view class="modal-footer">
+          <button class="modal-btn cancel-btn" @click="closeRemarkModal">取消</button>
+          <button class="modal-btn confirm-btn" @click="confirmRemark">确认</button>
+        </view>
+      </view>
+    </view>
 
     <!-- 底部固定区 -->
     <view class="footer-fixed">
@@ -159,6 +178,9 @@ export default {
             value: dayjs().format('YYYY-MM-DD HH:mm'),
         },
         remark: '',
+        // 备注弹窗相关
+        showRemarkModal: false,
+        tempRemark: '',
         // 用于保存表单的旧值,用于判断是否变动
         oldFormData: {
           weight: 1,
@@ -350,6 +372,29 @@ export default {
       // 取件时间修改后自动加载运力
       this.handleLoadDelivery();
     },
+    openRemarkModal() {
+      // 打开弹窗时,将当前备注内容赋值给临时变量
+      this.tempRemark = this.remark;
+      this.showRemarkModal = true;
+    },
+    closeRemarkModal() {
+      this.showRemarkModal = false;
+      this.tempRemark = '';
+    },
+    confirmRemark() {
+      // 保存旧的备注值
+      const oldRemark = this.remark;
+      // 更新备注
+      this.remark = this.tempRemark;
+      // 关闭弹窗
+      this.showRemarkModal = false;
+      this.tempRemark = '';
+      
+      // 如果有输入内容(不为空且不是纯空格),则自动执行加载运力
+      if (this.remark && this.remark.trim()) {
+        this.handleLoadDelivery();
+      }
+    },
     handleLoadDelivery() {
       // 校验重量是否填写
       if (!this.weight || Number(this.weight) <= 0) {
@@ -578,24 +623,21 @@ export default {
     }
   }
 
-  .remark-input {
-    flex: 1;
-    height: 56upx;
-    padding: 0 16upx;
+  .remark-action {
+    color: #3385FF;
+    display: flex;
+    align-items: center;
     font-size: 28upx;
-    color: #333333;
-    background-color: transparent;
-    border: none;
-    border-bottom: 1upx solid #f0f0f0;
-    border-radius: 0;
-    box-sizing: border-box;
-    text-align: right;
-    line-height: 56upx;
+    flex: 1;
+    justify-content: flex-end;
     
-    &::placeholder {
-      color: #999999;
-      font-size: 28upx;
-      line-height: 56upx;
+    text {
+      color: #333333;
+      margin-right: 8upx;
+      
+      &.placeholder {
+        color: #999999;
+      }
     }
   }
   .weight-input-wrapper {
@@ -1012,4 +1054,85 @@ export default {
     justify-content: center;
   }
 }
+
+/* 备注输入弹窗 */
+.remark-modal {
+  position: fixed;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  background-color: rgba(0, 0, 0, 0.5);
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  z-index: 9999;
+
+  .modal-content {
+    width: 600upx;
+    background-color: white;
+    border-radius: 16upx;
+    overflow: hidden;
+  }
+
+  .modal-header {
+    padding: 30upx 30upx 20upx;
+    border-bottom: 1upx solid #f0f0f0;
+
+    .modal-title {
+      font-size: 32upx;
+      font-weight: bold;
+      color: #333333;
+    }
+  }
+
+  .modal-body {
+    padding: 30upx;
+
+    .remark-textarea {
+      width: 100%;
+      min-height: 200upx;
+      padding: 20upx;
+      font-size: 28upx;
+      color: #333333;
+      background-color: #f9f9f9;
+      border-radius: 8upx;
+      border: 1upx solid #e0e0e0;
+      box-sizing: border-box;
+    }
+
+    .char-count {
+      margin-top: 10upx;
+      font-size: 24upx;
+      color: #999999;
+      text-align: right;
+    }
+  }
+
+  .modal-footer {
+    display: flex;
+    border-top: 1upx solid #f0f0f0;
+
+    .modal-btn {
+      flex: 1;
+      height: 90upx;
+      line-height: 90upx;
+      font-size: 30upx;
+      border: none;
+      background-color: transparent;
+      margin: 0;
+      padding: 0;
+
+      &.cancel-btn {
+        color: #666666;
+        border-right: 1upx solid #f0f0f0;
+      }
+
+      &.confirm-btn {
+        color: #3385FF;
+        font-weight: 500;
+      }
+    }
+  }
+}
 </style>

+ 169 - 46
hdApp/src/admin/delivery/allDelivery.vue

@@ -57,19 +57,16 @@
         <view class="form-label">取件时间<text class="required">*</text></view>
         <view class="time-action" @click="openTimePicker">
           <text>{{ pickupTime.label || '立即取件' }}</text>
-          <zui-svg-icon icon="general-arrow-right" :width="16" :height="16" color="#333" />
+          <zui-svg-icon icon="general-arrow-right" :width="16" :height="16" color="#049E2C" />
         </view>
       </view>
       <TimePicker ref="timePicker" @confirm="handleTimeConfirm" />
       <view class="form-row">
         <view class="form-label">备注</view>
-        <input 
-          v-model="remark" 
-          type="text"
-          placeholder="填写备注信息" 
-          maxlength="200"
-          class="remark-input"
-        />
+        <view class="remark-action" @click="openRemarkModal">
+          <text :class="{ placeholder: !remark }">{{ remark || '请填写备注信息' }}</text>
+          <zui-svg-icon icon="general-arrow-right" :width="16" :height="16" color="#049E2C" />
+        </view>
       </view>
     </view>
 
@@ -96,7 +93,7 @@
         </view>
         <view class="item-right">
           <view class="price">预估 ¥{{ item.price/100.00 }}</view>
-          <radio :checked="selectedDelivery === item.name" :disabled="!item.isAble" color="#3385FF" style="transform: scale(0.7)"></radio>
+          <radio :checked="selectedDelivery === item.name" :disabled="!item.isAble" color="#049E2C" style="transform: scale(0.7)"></radio>
         </view>
       </view>
 
@@ -108,6 +105,28 @@
       </view>
     </view>
 
+    <!-- 备注输入弹窗 -->
+    <view class="remark-modal" v-if="showRemarkModal" @click="closeRemarkModal">
+      <view class="modal-content" @click.stop>
+        <view class="modal-header">
+          <text class="modal-title">填写备注信息</text>
+        </view>
+        <view class="modal-body">
+          <textarea 
+            v-model="tempRemark" 
+            placeholder="请输入备注信息" 
+            maxlength="200"
+            :auto-height="true"
+            class="remark-textarea"
+          />
+          <view class="char-count">{{ tempRemark.length }}/200</view>
+        </view>
+        <view class="modal-footer">
+          <button class="modal-btn cancel-btn" @click="closeRemarkModal">取消</button>
+          <button class="modal-btn confirm-btn" @click="confirmRemark">确认</button>
+        </view>
+      </view>
+    </view>
 
     <!-- 底部固定区 -->
     <view class="footer-fixed">
@@ -154,6 +173,9 @@ export default {
             value: dayjs().format('YYYY-MM-DD HH:mm'),
         },
         remark: '',
+        // 备注弹窗相关
+        showRemarkModal: false,
+        tempRemark: '',
         // 用于保存表单的旧值,用于判断是否变动
         oldFormData: {
           weight: 1,
@@ -343,6 +365,29 @@ export default {
       // 取件时间修改后自动加载运力
       this.handleLoadDelivery();
     },
+    openRemarkModal() {
+      // 打开弹窗时,将当前备注内容赋值给临时变量
+      this.tempRemark = this.remark;
+      this.showRemarkModal = true;
+    },
+    closeRemarkModal() {
+      this.showRemarkModal = false;
+      this.tempRemark = '';
+    },
+    confirmRemark() {
+      // 保存旧的备注值
+      const oldRemark = this.remark;
+      // 更新备注
+      this.remark = this.tempRemark;
+      // 关闭弹窗
+      this.showRemarkModal = false;
+      this.tempRemark = '';
+      
+      // 如果有输入内容(不为空且不是纯空格),则自动执行加载运力
+      if (this.remark && this.remark.trim()) {
+        this.handleLoadDelivery();
+      }
+    },
     handleLoadDelivery() {
       // 校验重量是否填写
       if (!this.weight || Number(this.weight) <= 0) {
@@ -556,7 +601,7 @@ export default {
   }
 
   .time-action {
-    color: #3385FF;
+    color: #049E2C;
     display: flex;
     align-items: center;
     font-size: 28upx;
@@ -567,24 +612,21 @@ export default {
     }
   }
 
-  .remark-input {
-    flex: 1;
-    height: 56upx;
-    padding: 0 16upx;
+  .remark-action {
+    color: #049E2C;
+    display: flex;
+    align-items: center;
     font-size: 28upx;
-    color: #333333;
-    background-color: transparent;
-    border: none;
-    border-bottom: 1upx solid #f0f0f0;
-    border-radius: 0;
-    box-sizing: border-box;
-    text-align: right;
-    line-height: 56upx;
+    flex: 1;
+    justify-content: flex-end;
     
-    &::placeholder {
-      color: #999999;
-      font-size: 28upx;
-      line-height: 56upx;
+    text {
+      color: #333333;
+      margin-right: 8upx;
+      
+      &.placeholder {
+        color: #999999;
+      }
     }
   }
   .weight-input-wrapper {
@@ -655,17 +697,17 @@ export default {
 }
 
 /* 列表头部 - 固定不滚动 */
-.list-header {
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
-  padding: 20upx;
-  background-color: #f0f7ff;
-  margin: 0 20upx;
-  margin-bottom: 0;
-  border: 1upx solid #f0f0f0;
-  border-radius: 12upx 12upx 0 0;
-  flex-shrink: 0;
+  .list-header {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    padding: 20upx;
+    background-color: rgba(4, 158, 44, 0.05);
+    margin: 0 20upx;
+    margin-bottom: 0;
+    border: 1upx solid #f0f0f0;
+    border-radius: 12upx 12upx 0 0;
+    flex-shrink: 0;
 
   .header-left {
     display: flex;
@@ -680,15 +722,15 @@ export default {
   .header-title {
     font-size: 28upx;
     font-weight: bold;
-    color: #3385FF;
+    color: #049E2C;
   }
 
   .load-btn {
     padding: 8upx 20upx;
     font-size: 28upx;
-    color: #3385FF;
+    color: #049E2C;
     background-color: white;
-    border: 1upx solid #3385FF;
+    border: 1upx solid #049E2C;
     border-radius: 20upx;
     line-height: 1.5;
     height: auto;
@@ -696,7 +738,7 @@ export default {
     transition: all 0.3s;
 
     &:active {
-      background-color: #3385FF;
+      background-color: #049E2C;
       color: white;
     }
 
@@ -784,7 +826,7 @@ export default {
     }
 
     &.active {
-      background-color: #f0f7ff;
+      background-color: rgba(4, 158, 44, 0.05);
     }
 
     .item-left {
@@ -803,7 +845,7 @@ export default {
         }
 
         .tag-new {
-          background-color: #3385FF;
+          background-color: #049E2C;
           color: white;
           font-size: 20upx;
           padding: 3upx 8upx;
@@ -880,7 +922,7 @@ export default {
     }
 
     &.active {
-      background-color: #f0f7ff;
+      background-color: rgba(4, 158, 44, 0.05);
     }
 
     .item-left {
@@ -899,7 +941,7 @@ export default {
         }
 
         .tag-new {
-          background-color: #3385FF;
+          background-color: #049E2C;
           color: white;
           font-size: 20upx;
           padding: 3upx 8upx;
@@ -989,7 +1031,7 @@ export default {
     height: 80rpx;
     line-height: 80rpx;
     border-radius: 40rpx;
-    background: linear-gradient(to right, #2fa7ff, #007aff);
+    background: linear-gradient(to right, #049E2C, #06C547);
     color: white;
     font-size: 30rpx;
     font-weight: 500;
@@ -1001,4 +1043,85 @@ export default {
     justify-content: center;
   }
 }
+
+/* 备注输入弹窗 */
+.remark-modal {
+  position: fixed;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  background-color: rgba(0, 0, 0, 0.5);
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  z-index: 9999;
+
+  .modal-content {
+    width: 600upx;
+    background-color: white;
+    border-radius: 16upx;
+    overflow: hidden;
+  }
+
+  .modal-header {
+    padding: 30upx 30upx 20upx;
+    border-bottom: 1upx solid #f0f0f0;
+
+    .modal-title {
+      font-size: 32upx;
+      font-weight: bold;
+      color: #333333;
+    }
+  }
+
+  .modal-body {
+    padding: 30upx;
+
+    .remark-textarea {
+      width: 100%;
+      min-height: 200upx;
+      padding: 20upx;
+      font-size: 28upx;
+      color: #333333;
+      background-color: #f9f9f9;
+      border-radius: 8upx;
+      border: 1upx solid #e0e0e0;
+      box-sizing: border-box;
+    }
+
+    .char-count {
+      margin-top: 10upx;
+      font-size: 24upx;
+      color: #999999;
+      text-align: right;
+    }
+  }
+
+  .modal-footer {
+    display: flex;
+    border-top: 1upx solid #f0f0f0;
+
+    .modal-btn {
+      flex: 1;
+      height: 90upx;
+      line-height: 90upx;
+      font-size: 30upx;
+      border: none;
+      background-color: transparent;
+      margin: 0;
+      padding: 0;
+
+      &.cancel-btn {
+        color: #666666;
+        border-right: 1upx solid #f0f0f0;
+      }
+
+      &.confirm-btn {
+        color: #049E2C;
+        font-weight: 500;
+      }
+    }
+  }
+}
 </style>

+ 251 - 102
hdApp/src/admin/home/me.vue

@@ -4,33 +4,37 @@
     <template>
       <view class="me-user_box" @click="goAdmin()">
         <view class="user-info_item">
-          <view v-if="myInfo.shopAdminId > 0"> <view class="name"> {{ myInfo.adminName||'' }} </view> <view class="mobile"> ID {{ myInfo.shopAdminId }} </view> </view>
+          <view v-if="myInfo.shopAdminId > 0"> 
+            <view class="name"> {{ myInfo.adminName||'' }} </view> 
+            <view class="mobile"> ID {{ myInfo.shopAdminId }} </view> 
+          </view>
         </view>
       </view>
       <view class="me-shop_box">
         <view class="me-shop_content content_box">
           <view class="me-shop_top">
             <view class="shop-top_left">
-
               <image :src="myInfo.shopImg" style="width:110upx;border-radius:100upx;" mode="widthFix" v-if="!$util.isEmpty(getLoginInfo.admin) && getLoginInfo.admin.currentShopId > 0">
               </image>
               <image :src="myInfo.shopImg" style="width:110upx;border-radius:100upx;" mode="widthFix" @click="pageTo({url:'/admin/home/login'})" v-else>
               </image>
 
               <view class="top-info_box" v-if="!$util.isEmpty(getLoginInfo.admin) && getLoginInfo.admin.currentShopId > 0" @click="pageTo({url: '/admin/shop/add?id='+myInfo.shopInfo.id})">
-                <view> {{ myInfo.sjName||'' }} </view>
-                <view style="display: flex; align-items: center;">
+                <view class="shop-name-text"> {{ myInfo.sjName||'' }} </view>
+                <view class="shop-detail-text">
                   <text>{{ myInfo.shopName||'' }} | ID {{myInfo.shopId||''}}</text>
-                  <i class="iconfont iconbianji" style="font-size:26upx;color:#abafb5;margin-left:18upx;"></i>
+                  <i class="iconfont iconbianji"></i>
                 </view>
               </view>
 
               <view class="top-info_box" @click="pageTo({url:'/admin/home/login'})" v-else>
-              <view style="font-size:40upx;"> 登录/注册 </view>
+                <view class="login-text">登录/注册</view>
               </view>
 
             </view>
-            <button @click="changeShop" v-if="loginInfo.switchShop" class="admin-button-com default chang-shop_btn" > <i class="iconfont iconqiehuan1"></i>切换门店</button>
+            <button @click="changeShop" v-if="loginInfo.switchShop" class="admin-button-com default chang-shop_btn" > 
+              <i class="iconfont iconqiehuan1"></i>切换门店
+            </button>
           </view>
           <view class="image-box" > <image :src="`${constant.imgUrl}/ghs/me/upgrade2.png`"></image> </view>
         </view>
@@ -38,87 +42,119 @@
         <template v-if="lookMoney == 1">
         <view class="account-info_box content_box">
           <view class="info-lf_box">
-            <view> 账户余额(元) <text style="float:right;margin-right:15upx;font-size:28upx;" @click.stop="suggest()">联系客服</text></view>
-            <view> <text>¥ </text> {{ myInfo.balance||0 }} </view>
-            <view> 可提现 ¥ {{ myInfo.txBalance||0 }}
-            <text class="to-cash" @click="pageTo({ url: '/pagesStore/me/shopYeChange' })">变动明细</text>
-            <text class="to-cash" @click="pageTo({ url: '/pagesStore/me/withdraw' })">提现记录</text>
-            <text v-if="myInfo.txBalance > 0" @click="checkToApplyCash" class="to-cash">提现</text> </view>
+            <view class="balance-title">
+              <text>账户余额(元)</text>
+              <text class="contact-service" @click.stop="suggest()">联系客服</text>
+            </view>
+            <view class="balance-amount"> 
+              <text class="currency">¥</text> 
+              <span>{{ myInfo.balance||0 }}</span>
+            </view>
+            <view class="balance-actions">
+              <text>可提现 ¥ {{ myInfo.txBalance||0 }}</text>
+              <text class="action-btn" @click="pageTo({ url: '/pagesStore/me/shopYeChange' })">变动明细</text>
+              <text class="action-btn" @click="pageTo({ url: '/pagesStore/me/withdraw' })">提现记录</text>
+              <text class="action-btn withdraw-btn" v-if="myInfo.txBalance > 0" @click="checkToApplyCash">提现</text>
+            </view>
           </view>
         </view>
         </template>
 
         <view class="module-com content_box user-open_bx">
-          <view class="input-line-wrap">
-
-            <!-- <tui-list-cell @click="pageTo({ url: '/pagesStore/me/income' })" class="line-cell" :hover="false" :arrow="true" >
-              <view class="tui-title">收入明细</view>
-            </tui-list-cell>
-
-            <tui-list-cell @click="pageTo({ url: '/pagesStore/me/expend' })" class="line-cell" :hover="false" :arrow="true" >
-              <view class="tui-title">支出明细</view>
-            </tui-list-cell> 
-
-            <tui-list-cell @click="pageTo({ url: '/admin/coupon/couponList' })" class="line-cell" :hover="false" :arrow="true" >
-              <view class="tui-title">我的红包</view>
-            </tui-list-cell>
-
-            <tui-list-cell @click="pageTo({ url: '/pagesStore/me/rechargeList' })" class="line-cell" :hover="false" :arrow="true" >
-              <view class="tui-title">充值记录</view>
-            </tui-list-cell> -->
-
-            <tui-list-cell @click="getMyVideo()" class="line-cell" :hover="false" :arrow="true">
-              <view class="tui-title" style="color:green;">视频教程</view>
-            </tui-list-cell>
+          <view class="settings-group">
 
-            <tui-list-cell @click="pageTo({ url: '/admin/shop/password' })" class="line-cell" :hover="false" :arrow="true">
-              <view class="tui-title">密码修改</view>
-            </tui-list-cell>
-
-            <tui-list-cell @click="pageTo({ url: '/admin/shop/sk' })" class="line-cell" :hover="false" :arrow="true">
-              <view class="tui-title">更多设置</view>
-            </tui-list-cell>
-            <tui-list-cell @click="pageTo({ url: '/admin/delivery/deliveryManage' })" class="line-cell" :hover="false" :arrow="true" >
-              <view class="tui-title">绑定跑腿</view>
-            </tui-list-cell>
-
-            <tui-list-cell @click="pageTo({ url: '/admin/shop/print' })" class="line-cell" :hover="false" :arrow="true">
-              <view class="tui-title">前台小票机</view>
-            </tui-list-cell>
-            <tui-list-cell @click="pageTo({ url: '/admin/shop/trumpet' })" class="line-cell" :hover="false" :arrow="true">
-              <view class="tui-title">前台云音箱</view>
-            </tui-list-cell>
-
-            <tui-list-cell @click="pageTo({ url: '/admin/shop/makePrint' })" class="line-cell" :hover="false" :arrow="true">
-              <view class="tui-title">操作台小票机</view>
-            </tui-list-cell>
-            <tui-list-cell @click="pageTo({ url: '/admin/shop/makeTrumpet' })" class="line-cell" :hover="false" :arrow="true">
-              <view class="tui-title">操作台云音箱</view>
-            </tui-list-cell>
+            <!-- 帮助与支持 -->
+            <view class="settings-category">
+              <view class="category-title">📚 帮助与支持</view>
+              <view class="category-items">
+                <view class="menu-item" @click="getMyVideo()">
+                  <text class="item-label" style="color: #049E2C; font-weight: 500;">视频教程</text>
+                  <i class="iconfont iconxiangyou"></i>
+                </view>
+              </view>
+            </view>
 
-            <tui-list-cell @click="pageTo({ url: '/admin/shop/mtPrint' })" class="line-cell" :hover="false" :arrow="true">
-              <view class="tui-title">美团小票机</view>
-            </tui-list-cell>
-            <tui-list-cell @click="pageTo({ url: '/admin/shop/mtTrumpet' })" class="line-cell" :hover="false" :arrow="true">
-              <view class="tui-title">美团云音箱</view>
-            </tui-list-cell>
+            <!-- 安全设置 -->
+            <view class="settings-category">
+              <view class="category-title">🔐 安全设置</view>
+              <view class="category-items">
+                <view class="menu-item" @click="pageTo({ url: '/admin/shop/password' })">
+                  <text class="item-label">密码修改</text>
+                  <i class="iconfont iconxiangyou"></i>
+                </view>
+                <view class="menu-item" @click="pageTo({ url: '/pagesStore/me/cashSet' })">
+                  <text class="item-label">提现账号</text>
+                  <i class="iconfont iconxiangyou"></i>
+                </view>
+              </view>
+            </view>
 
-            <!-- #ifdef APP-PLUS -->
-            <tui-list-cell @click="getHzg()" class="line-cell" :hover="false" :arrow="true">
-              <view class="tui-title">更新APP</view>
-            </tui-list-cell>
+            <!-- 设备配置 -->
+            <view class="settings-category">
+              <view class="category-title">⚙️ 跑腿设置</view>
+              <view class="category-items">
+                <view class="menu-item" @click="pageTo({ url: '/admin/shop/sk' })">
+                  <text class="item-label">更多设置</text>
+                  <i class="iconfont iconxiangyou"></i>
+                </view>
+                <view class="menu-item" @click="pageTo({ url: '/admin/delivery/deliveryManage' })">
+                  <text class="item-label">绑定跑腿</text>
+                  <i class="iconfont iconxiangyou"></i>
+                </view>
+              </view>
+            </view>
 
-            <tui-list-cell @click="closeApp()" class="line-cell" :hover="false" :arrow="true" v-if="!$util.isEmpty(getLoginInfo.admin) && getLoginInfo.admin.currentShopId > 0">
-              <view class="tui-title">关闭APP</view>
-            </tui-list-cell>
-            <!-- #endif -->
-            <tui-list-cell @click="pageTo({ url: '/pagesStore/me/cashSet' })" class="line-cell" :hover="false" :arrow="true" >
-              <view class="tui-title">提现账号</view>
-            </tui-list-cell>
-            <tui-list-cell @click="loginOut()" class="line-cell" :hover="false" :arrow="true" v-if="!$util.isEmpty(getLoginInfo.admin) && getLoginInfo.admin.currentShopId > 0">
-              <view class="tui-title">退出登录</view>
-            </tui-list-cell>
+            <!-- 硬件管理 -->
+            <view class="settings-category">
+              <view class="category-title">🖨️ 硬件管理</view>
+              <view class="category-items">
+                <view class="menu-item" @click="pageTo({ url: '/admin/shop/print' })">
+                  <text class="item-label">前台小票机</text>
+                  <i class="iconfont iconxiangyou"></i>
+                </view>
+                <view class="menu-item" @click="pageTo({ url: '/admin/shop/trumpet' })">
+                  <text class="item-label">前台云音箱</text>
+                  <i class="iconfont iconxiangyou"></i>
+                </view>
+                <view class="menu-item" @click="pageTo({ url: '/admin/shop/makePrint' })">
+                  <text class="item-label">操作台小票机</text>
+                  <i class="iconfont iconxiangyou"></i>
+                </view>
+                <view class="menu-item" @click="pageTo({ url: '/admin/shop/makeTrumpet' })">
+                  <text class="item-label">操作台云音箱</text>
+                  <i class="iconfont iconxiangyou"></i>
+                </view>
+                <view class="menu-item" @click="pageTo({ url: '/admin/shop/mtPrint' })">
+                  <text class="item-label">美团小票机</text>
+                  <i class="iconfont iconxiangyou"></i>
+                </view>
+                <view class="menu-item" @click="pageTo({ url: '/admin/shop/mtTrumpet' })">
+                  <text class="item-label">美团云音箱</text>
+                  <i class="iconfont iconxiangyou"></i>
+                </view>
+              </view>
+            </view>
 
+            <!-- 应用管理 -->
+            <view class="settings-category">
+              <view class="category-title">📱 应用管理</view>
+              <view class="category-items">
+                <!-- #ifdef APP-PLUS -->
+                <view class="menu-item" @click="getHzg()">
+                  <text class="item-label">更新APP</text>
+                  <i class="iconfont iconxiangyou"></i>
+                </view>
+                <view class="menu-item" @click="closeApp()" v-if="!$util.isEmpty(getLoginInfo.admin) && getLoginInfo.admin.currentShopId > 0">
+                  <text class="item-label">关闭APP</text>
+                  <i class="iconfont iconxiangyou"></i>
+                </view>
+                <!-- #endif -->
+                <view class="menu-item logout-item" @click="loginOut()" v-if="!$util.isEmpty(getLoginInfo.admin) && getLoginInfo.admin.currentShopId > 0">
+                  <text class="item-label logout-text">退出登录</text>
+                  <i class="iconfont iconxiangyou"></i>
+                </view>
+              </view>
+            </view>
           </view>
         </view>
 
@@ -434,16 +470,33 @@ export default {
           & .top-info_box {
             padding-left: 30upx;
             box-sizing: border-box;
-            & > view:nth-child(1) {
+            flex: 1;
+            & > .shop-name-text {
               color: #333333;
               font-size: 32upx;
               font-weight: 600;
+              display: block;
             }
-            & > view:nth-child(2) {
+            & > .shop-detail-text {
               color: #666666;
               font-size: 26upx;
               font-weight: 400;
               margin-top: 22upx;
+              display: flex;
+              align-items: center;
+              & > text {
+                flex: 1;
+              }
+              & .iconfont {
+                font-size: 24upx;
+                color: #999;
+                margin-left: 12upx;
+              }
+            }
+            & > .login-text {
+              color: #333333;
+              font-size: 40upx;
+              font-weight: 600;
             }
           }
         }
@@ -502,30 +555,68 @@ export default {
     }
   & .account-info_box {
     margin-top: 20upx;
-    padding: 30upx 20upx;
+    padding: 32upx 24upx;
     box-sizing: border-box;
     display: flex;
     & .info-lf_box {
       flex: 1;
-      & > view:nth-child(1),
-      & > view:nth-child(3) {
+      & > .balance-title {
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
         font-weight: 400;
-        font-size: 24upx;
-      }
-      & > view:nth-child(1) {
+        font-size: 26upx;
         color: #999999;
+        margin-bottom: 20upx;
+        & .contact-service {
+          font-size: 26upx;
+          color: #049E2C;
+          font-weight: 500;
+        }
       }
-      & > view:nth-child(2) {
-        color: #333333;
-        font-size: 60upx;
-        font-weight: bold;
-        margin: 30upx 0;
-        & > text {
-          font-size: 38upx;
+      & > .balance-amount {
+        display: flex;
+        align-items: baseline;
+        margin-bottom: 28upx;
+        & .currency {
+          font-size: 40upx;
+          color: #333333;
+          font-weight: 600;
+        }
+        & span {
+          font-size: 56upx;
+          color: #333333;
+          font-weight: bold;
+          margin-left: 8upx;
         }
       }
-      & > view:nth-child(3) {
+      & > .balance-actions {
+        display: flex;
+        flex-wrap: wrap;
+        align-items: center;
+        gap: 12upx;
+        font-weight: 400;
+        font-size: 24upx;
         color: #666666;
+        & > text:first-child {
+          flex-basis: 100%;
+          margin-bottom: 8upx;
+        }
+        & .action-btn {
+          border: 1upx solid #e5e5e5;
+          border-radius: 20upx;
+          font-size: 24upx;
+          padding: 8upx 18upx;
+          box-sizing: border-box;
+          color: #666666;
+          
+          &.withdraw-btn {
+            background: #049E2C;
+            color: white;
+            border-color: #049E2C;
+            font-weight: 500;
+          }
+        }
       }
     }
     & > .admin-button-com {
@@ -533,18 +624,76 @@ export default {
       height: 50upx;
       border-radius: 25upx;
     }
-    & .to-cash {
-      border: 1upx solid rgba(0, 0, 0, 0.2);
-      border-radius: 25upx;
-      font-size: 22upx;
-      padding: 6upx 17upx 6upx 17upx;
-      box-sizing: border-box;
-      margin-left:30upx;
-    }
   }
   & .user-open_bx {
     margin-top: 20upx;
     border-radius: 10upx;
+    padding: 0;
+    background: transparent;
+    box-shadow: none;
+    
+    .settings-group {
+      display: flex;
+      flex-direction: column;
+      gap: 16upx;
+      
+      .settings-category {
+        background: #ffffff;
+        border-radius: 12upx;
+        overflow: hidden;
+        box-shadow: 0 2upx 8upx rgba(0, 0, 0, 0.04);
+        
+        .category-title {
+          padding: 18upx 24upx;
+          font-size: 26upx;
+          font-weight: 600;
+          color: #333;
+          background: #f8f9fa;
+          border-bottom: 1upx solid #f0f0f0;
+        }
+        
+        .category-items {
+          display: flex;
+          flex-direction: column;
+          
+          .menu-item {
+            display: flex;
+            justify-content: space-between;
+            align-items: center;
+            padding: 18upx 24upx;
+            border-bottom: 1upx solid #f5f5f5;
+            transition: all 0.2s ease;
+            
+            &:last-child {
+              border-bottom: none;
+            }
+            
+            &:active {
+              background: #f9fafb;
+            }
+            
+            &.logout-item {
+              .logout-text {
+                color: #ff6b6b;
+                font-weight: 500;
+              }
+            }
+            
+            .item-label {
+              font-size: 28upx;
+              color: #333;
+              flex: 1;
+            }
+            
+            .iconfont {
+              font-size: 20upx;
+              color: #999;
+              margin-left: 12upx;
+            }
+          }
+        }
+      }
+    }
   }
 }
 

+ 133 - 130
hdApp/src/admin/home/workbench.vue

@@ -17,42 +17,45 @@
       <template v-if="lookMoney == 1">
         <view class="today-overview-card">
           <view class="today-header">
-            <view class="today-title">今日概况</view>
-            <zui-svg-icon icon="home-message" color="#FFFFFF" :width="32" :height="29" @click.native="pageTo({url:'/admin/chat/list'})" />
-            <view class="red-mind" v-if="unReadMsgNum>0">{{ unReadMsgNum>9?'9+':unReadMsgNum }}</view>
-          </view>
-
-          <view class="today-income-section" @click.stop="pageTo({url:'/admin/stat/kdIncome'})">
-            <view class="income-label">收入</view>
-            <view class="income-value">
-              <text class="income-number">{{ $util.numberFormat(data.todayData.income) }}</text>
+            <view class="today-title">数据看板</view>
+            <view class="header-actions">
+              <zui-svg-icon icon="home-message" color="#FFFFFF" :width="32" :height="29" @click.native="pageTo({url:'/admin/chat/list'})" />
+              <view class="red-mind" v-if="unReadMsgNum>0">{{ unReadMsgNum>9?'9+':unReadMsgNum }}</view>
             </view>
           </view>
 
-          <view class="today-stats" @click.stop="pageTo({url:'/admin/custom/visit'})">
-            <view class="stat-item">
-              <view class="stat-content">
-                <view class="stat-label">访客</view>
-                <view class="stat-value">{{ $util.numberFormat(data.todayData.visit) || 0 }}</view>
+          <view class="today-stats-grid">
+            <view class="stats-left" @click.stop="pageTo({url:'/admin/stat/kdIncome'})">
+              <view class="income-label-small">今日收入</view>
+              <view class="income-value-large">
+                <text class="income-number-large">{{ $util.numberFormat(data.todayData.income) }}</text>
               </view>
             </view>
-
-            <navigator
-              url="/admin/home/order"
-              open-type="switchTab"
-              class="stat-item"
-              @click.stop="pageTo({url:'/admin/home/order'})"
-            >
-              <view class="stat-content">
-                <view class="stat-label">订单</view>
-                <view class="stat-value">{{ $util.numberFormat(data.todayData.order) || 0 }}</view>
+            <view class="stats-right">
+              <view class="stat-item-vertical" @click.stop="pageTo({url:'/admin/custom/visit'})">
+                <view class="stat-content">
+                  <view class="stat-label">访客</view>
+                  <view class="stat-value">{{ $util.numberFormat(data.todayData.visit) || 0 }}</view>
+                </view>
               </view>
-            </navigator>
 
-            <view class="stat-item" @click.stop="">
-              <view class="stat-content">
-                <view class="stat-label">昨日收入</view>
-                <view class="stat-value">{{ $util.numberFormat(data.yesterdayIncome) || 0 }}</view>
+              <navigator
+                url="/admin/home/order"
+                open-type="switchTab"
+                class="stat-item-vertical"
+                @click.stop="pageTo({url:'/admin/home/order'})"
+              >
+                <view class="stat-content">
+                  <view class="stat-label">订单</view>
+                  <view class="stat-value">{{ $util.numberFormat(data.todayData.order) || 0 }}</view>
+                </view>
+              </navigator>
+
+              <view class="stat-item-vertical" @click.stop="">
+                <view class="stat-content">
+                  <view class="stat-label">昨日收入</view>
+                  <view class="stat-value">{{ $util.numberFormat(data.yesterdayIncome) || 0 }}</view>
+                </view>
               </view>
             </view>
           </view>
@@ -492,8 +495,8 @@
           <view style="margin:60upx auto 40upx auto;font-weight:bold;font-size:36upx;text-align: center;">暂无供货商</view>
         </block>
 
-        <view style="text-align:center;margin-top:50upx;margin-bottom:182upx;color:#827171;font-size:28upx;">
-          <text style="margin-right:20upx;">中花汇提供技术支持</text>
+        <view style="text-align:center;margin-top:50upx;margin-bottom:182upx;color:#827171;font-size:30upx;">
+          <text style="margin-right:20upx;">厦门中花汇技术支持</text>
           <text style="margin-right:20upx;">|</text>
           <text @click="toPhone()">联系软件公司</text>
         </view>
@@ -505,7 +508,7 @@
     <view style="display:flex;width:100vw;padding:20upx 20upx 40upx 20upx;height:auto;justify-content: space-between;align-items:center;flex-wrap:wrap;max-height:100vh;overflow:auto;">
       <view style="width:100vw;margin-top:8upx;"><button @click="rechargeChange()">充值记录</button></view>
       <view style="width:100vw;margin-top:8upx;"><button @click="balanceChange()">余额变动</button></view>
-      <view style="width:100vw;margin-top:8upx;"><button @click="bpSj()">删除此商家</button></view>
+      <view style="width:100vw;margin-top:8upx;"><button @click="bpSj()">删除</button></view>
       <view style="width:100vw;margin-top:30upx;"><button @click="closeToShow()">取消</button></view>
     </view>
   </uni-popup>
@@ -949,7 +952,7 @@ export default {
     },
     bpSj(){
       let that = this
-      that.$util.confirmModal({content:'确认删除此商家?',okText:'确认'},() => {
+      that.$util.confirmModal({content:'确认删除?删除后你不能再跟此批发店买花!!!!',okText:'确认'},() => {
         that.confirmPb(that.currentGhs)
 			})
     },
@@ -1174,113 +1177,106 @@ export default {
 
 // 今日概况卡片
 .today-overview-card {
-  background: linear-gradient(135deg, #22C55E 0%, #16A34A 100%);
+  background: linear-gradient(to right, #1ba85e 0%, #22C55E 50%, #16A34A 100%);
   padding: 0;
   margin: 0 0 -20upx 0;
   overflow: hidden;
+  border-radius: 0 0 24upx 24upx;
   
   .today-header {
     display: flex;
     justify-content: space-between;
     align-items: center;
-    padding: 30upx 30upx 20upx;
+    padding: 24upx 28upx 16upx;
     
     .today-title {
-      font-size: 34upx;
-      font-weight: 600;
+      font-size: 32upx;
+      font-weight: 700;
       color: #ffffff;
+      letter-spacing: 1upx;
     }
-  }
-  
-  .today-income-section {
-    padding: 20upx 30upx 40upx 30upx;
-    text-align: center;
-    position: relative;
     
-    &:active {
-      background: rgba(0, 0, 0, 0.05);
-    }
-    
-    .income-label {
-      font-size: 26upx;
-      color: rgba(255, 255, 255, 0.9);
-      margin-bottom: 16upx;
-    }
-    
-    .income-value {
-      display: flex;
-      align-items: baseline;
-      justify-content: center;
-      margin-bottom: 12upx;
-      
-      .currency-symbol {
-        font-size: 32upx;
-        color: #ffffff;
-        font-weight: 500;
-        margin-right: 8upx;
-      }
-      
-      .income-number {
-        font-size: 56upx;
-        font-weight: 700;
-        color: #ffffff;
-        line-height: 1;
-      }
-    }
-    
-    .income-hint {
-      font-size: 24upx;
-      color: rgba(255, 255, 255, 0.9);
+    .header-actions {
+      position: relative;
       display: flex;
       align-items: center;
-      justify-content: center;
-      
-      &::after {
-        content: '>';
-        margin-left: 8upx;
-        font-weight: 600;
-      }
     }
   }
   
-  .today-stats {
+  .today-stats-grid {
     display: flex;
-    padding: 0;
+    padding: 20upx;
+    gap: 16upx;
     
-    .stat-item {
-      flex: 1;
-      padding: 10upx 0 50upx 0;
-      position: relative;
+    .stats-left {
+      flex: 0.8;
+      background: rgba(255, 255, 255, 0.15);
+      border-radius: 16upx;
+      padding: 24upx 20upx;
       text-align: center;
+      backdrop-filter: blur(10px);
       
-      &:not(:last-child)::after {
-        content: '';
-        position: absolute;
-        right: 0;
-        top: 50%;
-        transform: translateY(-50%);
-        width: 1upx;
-        height: 60upx;
+      &:active {
         background: rgba(255, 255, 255, 0.2);
       }
       
-      &:active {
-        background: rgba(0, 0, 0, 0.1);
+      .income-label-small {
+        font-size: 24upx;
+        color: rgba(255, 255, 255, 0.85);
+        margin-bottom: 12upx;
+        font-weight: 500;
       }
       
-      .stat-content {
+      .income-value-large {
+        display: flex;
+        align-items: baseline;
+        justify-content: center;
+        
+        .income-number-large {
+          font-size: 48upx;
+          font-weight: 800;
+          color: #ffffff;
+          line-height: 1;
+        }
+      }
+    }
+    
+    .stats-right {
+      flex: 1.2;
+      display: flex;
+      flex-direction: column;
+      gap: 12upx;
+      
+      .stat-item-vertical {
+        flex: 1;
+        background: rgba(255, 255, 255, 0.12);
+        border-radius: 12upx;
+        padding: 14upx 12upx;
         text-align: center;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        backdrop-filter: blur(8px);
         
-        .stat-label {
-          font-size: 26upx;
-          color: rgba(255, 255, 255, 0.9);
-          margin-bottom: 8upx;
+        &:active {
+          background: rgba(255, 255, 255, 0.18);
         }
         
-        .stat-value {
-          font-size: 36upx;
-          font-weight: 600;
-          color: #ffffff;
+        .stat-content {
+          width: 100%;
+          
+          .stat-label {
+            font-size: 22upx;
+            color: rgba(255, 255, 255, 0.8);
+            margin-bottom: 6upx;
+            font-weight: 500;
+          }
+          
+          .stat-value {
+            font-size: 32upx;
+            font-weight: 700;
+            color: #ffffff;
+          }
         }
       }
     }
@@ -1402,51 +1398,57 @@ export default {
   }
   
   .overview-grid {
-    display: flex;
-    flex-wrap: wrap;
-    padding: 10upx;
+    display: grid;
+    grid-template-columns: repeat(2, 1fr);
+    padding: 20upx;
+    gap: 16upx;
     
     .overview-item {
-      width: 33.33%;
-      padding: 30upx 0;
+      padding: 28upx 24upx;
       text-align: center;
       position: relative;
       transition: all 0.3s ease;
+      background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
+      border-radius: 14upx;
+      border: 1upx solid #f0f0f0;
+      box-shadow: 0 2upx 8upx rgba(0, 0, 0, 0.04);
       
-      &:not(:nth-child(3n)) {
+      &:not(:nth-child(2n)) {
         &::after {
           content: '';
           position: absolute;
           right: 0;
-          top: 50%;
-          transform: translateY(-50%);
-          width: 1upx;
-          height: 60upx;
-          background: #f0f0f0;
+          top: 0;
+          transform: none;
+          width: 0;
+          height: 0;
+          background: transparent;
         }
       }
       
-      &:nth-child(n+4) {
+      &:nth-child(n+3) {
         &::before {
           content: '';
           position: absolute;
-          left: 15%;
-          right: 15%;
+          left: 0;
+          right: 0;
           top: 0;
-          height: 1upx;
-          background: #f0f0f0;
+          height: 0;
+          background: transparent;
         }
       }
       
       &:active {
-        background: #f8fafb;
+        background: linear-gradient(135deg, #f0f8f5 0%, #e8f5f1 100%);
+        transform: translateY(-4upx);
+        box-shadow: 0 4upx 12upx rgba(0, 0, 0, 0.08);
       }
       
       .item-value {
-        font-size: 36upx;
-        font-weight: 600;
-        color: #105a2b;
-        margin-bottom: 10upx;
+        font-size: 40upx;
+        font-weight: 700;
+        color: #049E2C;
+        margin-bottom: 12upx;
         line-height: 1;
       }
       
@@ -1454,6 +1456,7 @@ export default {
         font-size: 26upx;
         color: #666;
         line-height: 1;
+        font-weight: 500;
       }
     }
   }

+ 2 - 2
hdApp/src/manifest.json

@@ -2,8 +2,8 @@
     "name" : "花掌柜",
     "appid" : "__UNI__4079DC1",
     "description" : "花店管家婆",
-    "versionName" : "2.2.0",
-    "versionCode" : 220,
+    "versionName" : "2.2.1",
+    "versionCode" : 221,
     "transformPx" : true,
     /* 5+App特有相关 */
     "app-plus" : {

+ 172 - 22
hdApp/src/pagesPurchase/contact.vue

@@ -1,33 +1,58 @@
 <template>
   <view class="app-content">
-
-    <view>
-      <view style="font-size:40upx;font-weight:bold;margin-top:10upx;margin-bottom:10upx;">花材质量问题、价格问题,请通过下图位置找商家:</view>
-      <view style="border:1upx solid #CCCCCC;"><image class="logo" :src="`${constant.imgUrl}/shop/contact_shop.png`" alt mode="widthFix" ></image></view>
+    <!-- 图片说明区域 -->
+    <view class="section-card">
+      <view class="section-title">📍 找不到商家</view>
+      <view class="section-desc">花材质量问题、价格问题,请通过下图位置找商家:</view>
+      <view class="image-box">
+        <image class="logo" :src="`${constant.imgUrl}/shop/contact_shop.png`" mode="widthFix"></image>
+      </view>
     </view>
-    <view style="font-size:40upx;margin-top:40upx;font-weight:bold;color:black;">零售花店,常见问题:</view>
 
-    <view style="margin-top:20upx;color:#3385ff;font-size:30upx;font-weight:bold;">我注册之后,怎么看不到批发店,不能买花?</view>
-    <view style="font-size:30upx;">答:直接搜索【花掌柜】注册,上面是不会显示批发店的,你只能找批发店拿二维码,通过扫二维码进去注册之后,才会有批发店</view>
+    <!-- 常见问题区域 -->
+    <view class="section-card">
+      <view class="section-title">❓ 零售花店-常见问题</view>
+      
+      <view class="faq-item">
+        <view class="faq-question">Q:我注册之后,怎么看不到批发店,不能买花?</view>
+        <view class="faq-answer">A:直接搜索【花掌柜】注册,上面是不会显示批发店的,你只能找批发店拿二维码,通过扫二维码进去注册之后,才会有批发店</view>
+      </view>
 
-    <view style="margin-top:20upx;color:#3385ff;font-size:30upx;font-weight:bold;">我注册之后,能不能注销?</view>
-    <view style="font-size:30upx;">答:注册之后暂时不能注销,不需要理会它就行。我们没有时间处理这块需求,请勿联系,否则基本挨骂,如确实有问题先找你的批发店反应,批发店再反应到我们这边。</view>
+      <view class="faq-item">
+        <view class="faq-question">Q:我注册之后,能不能注销?</view>
+        <view class="faq-answer">A:注册之后暂时不能注销,不需要理会它就行。我们没有时间处理这块需求,请勿联系,否则基本挨骂,如确实有问题先找你的批发店反应,批发店再反应到我们这边。</view>
+      </view>
 
-    <view style="margin-top:20upx;color:#3385ff;font-size:30upx;font-weight:bold;">我注册之后,显示的价格异常,怎么办?</view>
-    <view style="font-size:30upx;">答:价格异常,请联系你的批发店,跟批发店设置有关。跟你注册时怎么填写是没有关系的,不需要注销或重新注册。如不联系批发店,注销和重新注册后,显示结果也是一样的。</view>
+      <view class="faq-item">
+        <view class="faq-question">Q:我注册之后,显示的价格异常,怎么办?</view>
+        <view class="faq-answer">A:价格异常,请联系你的批发店,跟批发店设置有关。跟你注册时怎么填写是没有关系的,不需要注销或重新注册。如不联系批发店,注销和重新注册后,显示结果也是一样的。</view>
+      </view>
 
-    <view style="margin-top:20upx;color:#3385ff;font-size:30upx;font-weight:bold;">零售花店是否可以申请商城系统</view>
-    <view style="font-size:34upx;">
-    现在没有可用的零售系统,后面有了我们会在系统里面公告。现在我们服务批发店就已经太多,公司客服人员不足,服务不过来,暂时没办法给你提供服务,请谅解。请勿联系!请勿联系!请勿联系!我们已经强调三遍了,联系我们就挨骂!!!
+      <view class="faq-item">
+        <view class="faq-question">Q:零售花店是否可以申请商城系统?</view>
+        <view class="faq-answer">A:现在没有可用的零售系统,后面有了我们会在系统里面公告。现在我们服务批发店就已经太多,公司客服人员不足,服务不过来,暂时没办法给你提供服务,请谅解。请勿联系!请勿联系!请勿联系!我们已经强调三遍了,联系我们就挨骂!!!</view>
+      </view>
     </view>
 
-    <view style="font-size:40upx;margin-top:40upx;font-weight:bold;color: red;">
-    零售想做批发的 和 斗南批发商,请勿联系我们,系统做不起来,不要浪费时间浪费钱,勿扰!勿扰!勿扰!打电话过来就挨骂!!
+    <!-- 警告提示区域 -->
+    <view class="alert-section">
+      <view class="alert-warning">
+        <view class="alert-icon">⚠️</view>
+        <view class="alert-text">零售想做批发的 和 斗南批发商,请勿联系我们,系统做不起来,不要浪费时间浪费钱,勿扰!勿扰!勿扰!打电话过来就挨骂!!</view>
+      </view>
     </view>
-    <view style="font-size:40upx;margin-top:40upx;font-weight:bold;color:green;margin-bottom:10upx;">
-    城市批发店,如需要申请使用商城和系统,请电话联系我们:15280215347
+
+    <!-- 联系信息区域 -->
+    <view class="section-card contact-section">
+      <view class="section-title">☎️ 联系我们</view>
+      <view class="contact-info">
+        <view class="info-text">城市批发店,如需要申请使用商城和系统,请电话联系我们</view>
+        <view class="phone-number">15280215347</view>
+      </view>
+      <view class="button-wrapper">
+        <button class="admin-button-com big green" @click="suggest">拨打电话</button>
+      </view>
     </view>
-    <view @click="suggest" style="color:green;text-align:center;font-size:40upx;margin-bottom:60upx;margin-top:20upx;font-weight:bold;text-decoration: underline;">拨打电话</view>
   </view>
 </template>
 <script>
@@ -67,15 +92,139 @@ export default {
 .app-content {
   min-height: calc(100vh - 20upx);
   padding-top: 20upx;
-  padding-left:10upx;
-  padding-right:10upx;
-  padding-bottom:50upx;
+  padding-left: 20upx;
+  padding-right: 20upx;
+  padding-bottom: 80upx;
+  background: #f5f7fa;
+}
+
+/* 卡片样式 */
+.section-card {
+  background: #ffffff;
+  border-radius: 14upx;
+  padding: 28upx 24upx;
+  margin-bottom: 20upx;
+  box-shadow: 0 2upx 8upx rgba(0, 0, 0, 0.04);
+
+  .section-title {
+    font-size: 32upx;
+    font-weight: 700;
+    color: #333;
+    margin-bottom: 16upx;
+    display: flex;
+    align-items: center;
+    gap: 8upx;
+  }
+
+  .section-desc {
+    font-size: 32upx;
+    font-weight: bold;
+    color: #333;
+    margin-bottom: 16upx;
+    line-height: 1.5;
+  }
+}
+
+/* 图片盒子 */
+.image-box {
+  width: 100%;
+  border-radius: 10upx;
+  overflow: hidden;
+  border: 1upx solid #f0f0f0;
+
+  .logo {
+    width: 100%;
+    display: block;
+  }
+}
+
+/* 常见问题区域 */
+.faq-item {
+  padding: 20upx 0;
+  border-bottom: 1upx solid #f5f5f5;
+
+  &:last-child {
+    border-bottom: none;
+  }
+
+  .faq-question {
+    font-size: 30upx;
+    color: #0066cc;
+    font-weight: 600;
+    margin-bottom: 12upx;
+    line-height: 1.4;
+  }
+
+  .faq-answer {
+    font-size: 30upx;
+    color: #666;
+    line-height: 1.6;
+  }
 }
+
+/* 警告区域 */
+.alert-section {
+  margin-bottom: 20upx;
+}
+
+.alert-warning {
+  background: linear-gradient(135deg, #fff5f5 0%, #ffe6e6 100%);
+  border: 2upx solid #ff6b6b;
+  border-radius: 14upx;
+  padding: 24upx 20upx;
+  display: flex;
+  gap: 16upx;
+
+  .alert-icon {
+    font-size: 36upx;
+    flex-shrink: 0;
+  }
+
+  .alert-text {
+    font-size:36upx;
+    color: #c41d2a;
+    font-weight: 600;
+    line-height: 1.6;
+    flex: 1;
+  }
+}
+
+/* 联系区域 */
+.contact-section {
+  .contact-info {
+    background: #f9fafb;
+    border-radius: 10upx;
+    padding: 20upx 16upx;
+    margin-bottom: 24upx;
+
+    .info-text {
+      font-size:34upx;
+      font-weight: bold;
+      color: #666;
+      margin-bottom: 12upx;
+      line-height: 1.5;
+    }
+
+    .phone-number {
+      font-size: 36upx;
+      color: #049E2C;
+      font-weight: 700;
+      letter-spacing: 2upx;
+    }
+  }
+
+  .button-wrapper {
+    display: flex;
+    justify-content: center;
+  }
+}
+
 .prompt-text {
   color: $fontColor3;
   padding-left: 30upx;
   margin-bottom: 30upx;
 }
+
 .module-com {
   margin-bottom: 20upx;
   .member-wrap {
@@ -91,6 +240,7 @@ export default {
     }
   }
 }
+
 .confirm-btn {
   width: calc(100% - 60upx);
   margin: 60upx 30upx 20upx;

+ 4 - 4
hdApp/src/pagesPurchase/order.vue

@@ -115,8 +115,8 @@
 
         <view v-else style="margin:60upx auto 40upx auto;font-weight:bold;font-size:36upx;text-align: center;">暂无供货商</view>
 
-        <view style="text-align:center;margin-top:50upx;margin-bottom:182upx;color:#827171;font-size:28upx;">
-          <text style="margin-right:20upx;">中花汇提供技术</text>
+        <view style="text-align:center;margin-top:50upx;margin-bottom:182upx;color:#827171;font-size:30upx;">
+          <text style="margin-right:20upx;">厦门中花汇技术支持</text>
           <text style="margin-right:20upx;">|</text>
           <text @click="toPhone()">联系软件公司</text>
         </view>
@@ -129,7 +129,7 @@
 			<view style="display:flex;width:100vw;padding:20upx 20upx 40upx 20upx;height:auto;justify-content: space-between;align-items:center;flex-wrap:wrap;max-height:100vh;overflow:auto;">
         <view style="width:100vw;margin-top:8upx;"><button @click="rechargeChange()">充值记录</button></view>
 				<view style="width:100vw;margin-top:8upx;"><button @click="balanceChange()">余额变动记录</button></view>
-				<view style="width:100vw;margin-top:8upx;"><button @click="bpSj()">删除此商家</button></view>
+				<view style="width:100vw;margin-top:8upx;"><button @click="bpSj()">删除</button></view>
 				<view style="width:100vw;margin-top:30upx;"><button @click="closeToShow()">取消</button></view>
 			</view>
 		  </uni-popup>
@@ -280,7 +280,7 @@ export default {
     },
     bpSj(){
       let that = this
-      that.$util.confirmModal({content:'确认删除此商家?',okText:'确认'},() => {
+      that.$util.confirmModal({content:'确认删除?删除后你不能再跟此批发店买花!!!!',okText:'确认'},() => {
         that.confirmPb(that.currentGhs)
 			})
     },

+ 2 - 2
开发http/hdApp/src/manifest.json

@@ -2,8 +2,8 @@
     "name" : "花掌柜",
     "appid" : "__UNI__4079DC1",
     "description" : "花店管家婆",
-    "versionName" : "2.2.0",
-    "versionCode" : 220,
+    "versionName" : "2.2.1",
+    "versionCode" : 221,
     "transformPx" : true,
     /* 5+App特有相关 */
     "app-plus" : {

+ 2 - 2
开发https/hdApp/src/manifest.json

@@ -2,8 +2,8 @@
     "name" : "花掌柜",
     "appid" : "__UNI__4079DC1",
     "description" : "花店管家婆",
-    "versionName" : "2.2.0",
-    "versionCode" : 220,
+    "versionName" : "2.2.1",
+    "versionCode" : 221,
     "transformPx" : true,
     /* 5+App特有相关 */
     "app-plus" : {

+ 2 - 2
线上/hdApp/src/manifest.json

@@ -2,8 +2,8 @@
     "name" : "花掌柜",
     "appid" : "__UNI__4079DC1",
     "description" : "花店管家婆",
-    "versionName" : "2.2.0",
-    "versionCode" : 220,
+    "versionName" : "2.2.1",
+    "versionCode" : 221,
     "transformPx" : true,
     /* 5+App特有相关 */
     "app-plus" : {