Răsfoiți Sursa

花掌柜 重大改版 开始

shish 4 luni în urmă
părinte
comite
175cb93096

+ 1 - 1
hdApp/src/admin/home/apply.vue

@@ -17,6 +17,7 @@
       </view>
     </view>
     <NotLogin></NotLogin>
+    <custom-tab-bar :current="4" />
   </view>
 </template>
 <script>
@@ -60,7 +61,6 @@ export default {
             { name: "门店", emoji: "🏢", url: "/admin/shop/list",pf:1},
             { name: "员工", emoji: "👥", url: "/admin/staff/list",pf:1},
             { name: "员工业绩", emoji: "🏆", url: "/admin/staff/achieve",pf:1},
-            { name: "功能开关", emoji: "⚙️", url: "/pagesPurchase/open",pf:1},
             { name: "失信人员", emoji: "⛔", url: "/admin/ll/list",pf:1},
             { name: "会员等级", emoji: "👑", url: "/admin/member/level",pf:1},
             { name: "充值送红包", emoji: "🧧", url: "/admin/hb/ruleList",pf:1},

+ 262 - 0
hdApp/src/admin/home/bought.vue

@@ -0,0 +1,262 @@
+<template>
+    <view class="order-page">
+      <app-tabs :tabs="tabs" :isFixed="true" :currentTab="tabIndex" @change="change" itemWidth="20%"/>
+  
+              <view style="margin-left:60upx;margin-top:110upx;padding-bottom:30upx;position: relative;">
+                  <DateSelect @selectDateFn="selectDateFn" defaultShowName='时间' />
+          
+          <button class="admin-button-com mini-btn blue" style="position: absolute;right:300upx;top:-8upx;" @click="selGhs()">{{ ghsName==''?'选批发店':ghsName }}</button>
+  
+          <button class="admin-button-com mini-btn blue" style="position: absolute;right:80upx;top:-8upx;" @click="resetSearch()">重置搜索</button>
+  
+              </view>
+  
+      <block v-if="!$util.isEmpty(list.data)">
+      <view class="pay_list">
+          <OrderItem v-for="(item, index) in list.data" :key="index" :info="item" @click="goToDetail"></OrderItem>
+      </view>
+      </block>
+      <block v-else>
+      <view>
+        <AppWrapperEmpty title="暂无数据" :is-empty="$util.isEmpty(list.data)"/>
+      </view>
+      </block>
+  
+      <custom-tab-bar :current="1" />
+
+    </view>
+  </template>
+  <script>
+  import AppTabs from "@/components/plugin/tabs";
+  import OrderItem from "./orderItem";
+  import { list } from "@/mixins";
+  import AppWrapperEmpty from "@/components/app-wrapper-empty";
+  import { ghsList, purchaseList } from "@/api/purchase/index";
+  import DateSelect from "@/components/module/dateSelect";
+  export default {
+    components: {
+      AppWrapperEmpty,
+      OrderItem,
+      AppTabs,
+      DateSelect
+    },
+    mixins: [list],
+    data () {
+      return {
+         tabs: [
+          {
+            name: "全部",
+            value: 0,
+            key: '0'
+          },
+          {
+            name: "待付款",
+            value: 0,
+            key: '1'
+          },
+          {
+            name: "待发货",
+            value: 0,
+            key: '2'
+          },
+          {
+            name: "配送中",
+            value: 0,
+            key: '3'
+          },
+          {
+            name: "已完成",
+            value: 0,
+            key: '4'
+          }
+        ],
+        list: {
+          data: []
+        },
+        supplierList: [],
+        tabIndex: 0,
+        status: '0',
+        refreshPage:0,
+              searchContent:'',			
+              searchTime:'',
+              startTime:'',
+        ghsId:0,
+        ghsName:''
+      }
+    },
+    onReachBottom () {
+      if (!this.list.finished) {
+        this.getMyPurchase().then(res => {
+          uni.stopPullDownRefresh()
+        });
+      } else {
+        uni.stopPullDownRefresh()
+      }
+    },
+    onPullDownRefresh () {
+      this.resetList();
+      this.getMyPurchase().then(res => {
+        uni.stopPullDownRefresh()
+      })
+    },
+    onShow(){
+      if(this.refreshPage == 1){
+        this.resetList()
+        this.getMyPurchase()
+        this.refreshPage = 0
+      }
+    },
+    methods: {
+      selGhs(){
+        this.$util.pageTo({ url: "/pagesPurchase/selectGhs"})
+      },
+      resetSearch(){
+        this.ghsId = 0
+        this.ghsName=''
+        this.searchTime = ''
+        this.startTime = ''
+        this.endTime = ''
+        this.resetList()
+        this.getMyPurchase()      
+      },
+          selectDateFn(val) {
+              this.searchTime = val.searchTime
+              this.startTime = val.startTime
+              this.endTime = val.endTime
+        this.resetList()
+        this.getMyPurchase()
+          },	
+      change(e) {
+        if (this.tabIndex != e.index) {
+          uni.pageScrollTo({
+            scrollTop: 0,
+            duration: 0
+          });
+          this.resetList();
+          this.list.finished = true;
+          this.tabIndex = e.index;
+          this.status = e.item.key;
+          this.getMyPurchase().then(() => {
+            this.list.finished = false;
+          });
+        }
+      },
+      init() {
+        if(this.option.ghsId){
+          this.ghsId = this.option.ghsId?this.option.ghsId:0
+          this.ghsName = this.option.ghsName?this.option.ghsName:''
+        }
+        this.getMyPurchase()
+      },
+      getMyPurchase () {
+        return purchaseList({ status: this.status,page: this.list.page,searchTime: this.searchTime,startTime: this.startTime,endTime: this.endTime,ghsId:this.ghsId}).then(res => {
+          this.completes(res)
+          if (this.$util.isEmpty(res.data)){
+            return false
+          }
+          this.tabs[0].value = res.data.shop.totalPurchaseOrder
+          this.tabs[1].value = res.data.shop.cgUnPay
+          this.tabs[2].value = res.data.shop.cgUnSend
+          this.tabs[3].value = res.data.shop.cgSending
+          this.tabs[4].value = res.data.shop.cgFinish
+        })
+      },
+      goToDetail (val) {
+        uni.navigateTo({ url: '/pagesPurchase/purDetails?id=' + val.id })
+      },
+      addEvent() {
+        uni.navigateTo({url: '/pagesPurchase/order'})
+      }
+    }
+  }
+  </script>
+  
+  <style lang="scss" scoped>
+  .order-page {
+    .tabs {
+      height: 80upx;
+      line-height: 80upx;
+      & > view {
+        // padding: 0 80upx;
+        width: 50%;
+        text-align: center;
+        font-size: 28upx;
+        color: #666;
+        display: inline-block;
+      }
+      & > .active {
+        position: relative;
+        color: #3385ff;
+        font-weight: 700;
+      }
+      & > .active::after {
+        content: "";
+        position: absolute;
+        bottom: 0;
+        left: 50%;
+        transform: translateX(-50%);
+        width: 70upx;
+        height: 6upx;
+        background: #3385ff;
+      }
+    }
+    .order_list {
+      // height: 200upx;
+      height: 100%;
+      background: #f0f2f6;
+      padding: 0 0 20upx;
+      .list_item {
+        margin: 20upx 0 0;
+        // padding-left: 20upx;
+        position: relative;
+        height: 180upx;
+        width: 100vw;
+        background: #fff;
+        display: flex;
+        align-items: center;
+        & > image {
+          margin-left: 30upx;
+          width: 120upx;
+          height: 120upx;
+          border-radius: 60upx;
+        }
+        & > .store_name {
+          margin-left: 30upx;
+          & > .store_title {
+            margin-bottom: 30upx;
+            font-size: 32upx;
+            font-weight: 700;
+            color: #333;
+          }
+          & > .accumulative {
+            font-size: 26upx;
+            color: #999;
+          }
+        }
+        & > .store_btn {
+          position: absolute;
+          right: 30upx;
+          // padding-right: 30upx;
+          & > .btn_entrance {
+            display: inline-block;
+            font-size: 26upx;
+            color: #3385ff;
+            border: 1px solid #3385ff;
+            border-radius: 8upx;
+            padding: 15upx 30upx;
+            margin-left: 30upx;
+          }
+          & > .btn_forbid {
+            border: 1px solid #999;
+            color: #999;
+          }
+        }
+      }
+    }
+    .pay_list {
+      padding-top:20upx;
+      padding-bottom: 100upx;
+      background-color: #f0f2f6;
+    }
+  }
+  </style> 

+ 1624 - 0
hdApp/src/admin/home/mall.vue

@@ -0,0 +1,1624 @@
+<template>
+<view>
+  <block v-if="loginStyle  == 0">
+    <view style="width:100vw;text-align: center;">
+      <!-- #ifdef MP-WEIXIN -->
+      <view style="margin-top:50upx;font-size:34upx;margin-bottom:30upx;">个人买花</view>
+      <view><button class="admin-button-com big blue" style="width:240upx;" @click="buyItem">去买花</button></view>
+	    <!-- #endif -->
+      <view style="margin-top:100upx;font-size:34upx;margin-bottom:30upx;">花店登录</view>
+      <view><button class="admin-button-com big blue" style="width:240upx;" @click="pageTo({url:'/admin/home/login'})">去登录</button></view>
+      <view style="font-size:40upx;color:green;text-decoration: underline;margin-top:60upx;" @click="pageTo({url:'/pagesClient/official/apply'})">花店注册</view>
+    </view>
+  </block>
+  <block v-else>
+    <view class="app-main app-content">
+      <template v-if="lookMoney == 1">
+        <view class="today-overview-card">
+          <view class="bubble-header">
+            <view class="bubble-title">📊 数据看板</view>
+            <view class="message-btn" @click="pageTo({url:'/admin/chat/list'})">
+              <view class="msg-icon">💬</view>
+              <view class="red-mind" v-if="unReadMsgNum>0">{{ unReadMsgNum>9?'9+':unReadMsgNum }}</view>
+            </view>
+          </view>
+
+          <view class="stat-grid">
+
+            <view class="stat-item" @click.stop="pageTo({url:'/admin/stat/kdIncome'})">
+              <view class="stat-label" style="opacity: 0.8;">收入</view>
+              <view class="stat-value">{{ $util.numberFormat(data.todayData.income) }}</view>
+            </view>
+
+            <navigator
+              url="/admin/home/order"
+              open-type="switchTab"
+              class="stat-item"
+              @click.stop="pageTo({url:'/admin/home/order'})"
+            >
+              <view class="stat-label" style="opacity: 0.8;">订单</view>
+              <view class="stat-value">{{ $util.numberFormat(data.todayData.order) || 0 }}</view>
+            </navigator>
+
+            <view class="stat-item" @click.stop="pageTo({url:'/admin/custom/visit'})">
+              <view class="stat-label" style="opacity: 0.8;">客户</view>
+              <view class="stat-value">{{ $util.numberFormat(data.todayData.visit) || 0 }}</view>
+            </view>
+
+          </view>
+        </view>
+      </template>
+
+      <view class="module-com news-wrap">
+        <view class="news-list" v-for="(item, index) in data.notice" :key="index" @click="noticeFn(item)" >
+          <view class="news-left">
+            <i class="iconfont iconxiaoxi2 ling"></i>
+            <span>{{ item.title }}</span>
+          </view>
+          <view class="news-right">
+            <span>{{ item.action }}</span>
+            <i class="iconfont iconxiangyou"></i>
+          </view>
+        </view>
+      </view>
+
+      <view v-if="!$util.isEmpty(data.warning)" class="alert-card alert-card-error">
+        <view class="alert-content">
+          <view class="alert-text">{{ data.warning }}</view>
+        </view>
+      </view>
+
+      <view class="module-com flower-module">
+        <!-- 花束 -->
+        <view class="flower-section">
+          <view class="section-header">
+            <view class="header-title">🌹 绿植花束</view>
+          </view>
+          <view class="icon-grid">
+            <view class="icon-item" @click="goPage({url: '/admin/cg/mall'})">
+              <view class="icon-wrapper">
+                <view class="icon-emoji">🏪</view>
+              </view>
+              <view class="icon-text">商城</view>
+            </view>
+            <view class="icon-item" @click="goPage({url: '/admin/work/list'})">
+              <view class="icon-wrapper">
+                <view class="icon-emoji">✅</view>
+              </view>
+              <view class="icon-text">任务</view>
+            </view>
+            <view class="icon-item" @click="goHsKd">
+              <view class="icon-wrapper">
+                <view class="icon-emoji">📝</view>
+              </view>
+              <view class="icon-text">开单</view>
+            </view>
+            <view class="icon-item" @click="goHsKjKd">
+              <view class="icon-wrapper">
+                <view class="icon-emoji">⚡</view>
+              </view>
+              <view class="icon-text">快捷开单</view>
+            </view>
+            <view class="icon-item" @click="goPage({url: '/admin/goods/category'})">
+              <view class="icon-wrapper">
+                <view class="icon-emoji">📂</view>
+              </view>
+              <view class="icon-text">分类</view>
+            </view>
+            <view class="icon-item" @click="goPage({url: '/admin/goods/categorySort'})">
+              <view class="icon-wrapper">
+                <view class="icon-emoji">↕️</view>
+              </view>
+              <view class="icon-text">排序</view>
+            </view>
+            <view class="icon-item" @click="goPage({url: '/admin/goods/list'})">
+              <view class="icon-wrapper">
+                <view class="icon-emoji">🌸</view>
+              </view>
+              <view class="icon-text">绿植花束</view>
+            </view>
+            <view class="icon-item" @click="goPage({url: '/admin/goods/add'})">
+              <view class="icon-wrapper">
+                <view class="icon-emoji">➕</view>
+              </view>
+              <view class="icon-text">新增花束</view>
+            </view>
+          </view>
+        </view>
+
+        <!-- 花材 -->
+        <view class="flower-section">
+          <view class="section-header">
+            <view class="header-title">🌿 花材</view>
+          </view>
+          <view class="icon-grid">
+            <view class="icon-item" @click="goPage({url: '/admin/cg/item'})">
+              <view class="icon-wrapper">
+                <view class="icon-emoji">🏪</view>
+              </view>
+              <view class="icon-text">商城</view>
+            </view>
+            <view class="icon-item" @click="goPage({url: '/admin/item/list2'})">
+              <view class="icon-wrapper">
+                <view class="icon-emoji">🌿</view>
+              </view>
+              <view class="icon-text">花材</view>
+            </view>
+            <view class="icon-item" @click="goItemKd()">
+              <view class="icon-wrapper">
+                <view class="icon-emoji">📝</view>
+              </view>
+              <view class="icon-text">开单</view>
+            </view>
+            <view class="icon-item" @click="goItemKjKd()">
+              <view class="icon-wrapper">
+                <view class="icon-emoji">⚡</view>
+              </view>
+              <view class="icon-text">快捷开单</view>
+            </view>
+            <view class="icon-item" @click="goPage({url: '/admin/part/list'})">
+              <view class="icon-wrapper">
+                <view class="icon-emoji">✂️</view>
+              </view>
+              <view class="icon-text">拆散</view>
+            </view>
+            <view class="icon-item" @click="goPage({url: '/admin/changePrice/list2'})">
+              <view class="icon-wrapper">
+                <view class="icon-emoji">💰</view>
+              </view>
+              <view class="icon-text">改价</view>
+            </view>
+            <view class="icon-item" @click="goPage({url: '/admin/breakage/list'})">
+              <view class="icon-wrapper">
+                <view class="icon-emoji">🗑️</view>
+              </view>
+              <view class="icon-text">报损</view>
+            </view>
+            <view class="icon-item" @click="goPage({url: '/admin/itemClass/list'})">
+              <view class="icon-wrapper">
+                <view class="icon-emoji">📂</view>
+              </view>
+              <view class="icon-text">分类</view>
+            </view>
+          </view>
+        </view>
+
+        <!-- 更多 -->
+        <view class="flower-section">
+          <view class="section-header">
+            <view class="header-title">⚙️ 更多功能</view>
+          </view>
+          <view class="icon-grid">
+            <view class="icon-item" @click="goPage({url: '/admin/order/expend'})">
+              <view class="icon-wrapper">
+                <view class="icon-emoji">💰</view>
+              </view>
+              <view class="icon-text">支出</view>
+            </view>
+            <view class="icon-item" @click="goPage({url: '/admin/staff/list'})">
+              <view class="icon-wrapper">
+                <view class="icon-emoji">👥</view>
+              </view>
+              <view class="icon-text">员工</view>
+            </view>
+            <view class="icon-item" @click="goPage({url: '/admin/stat/profit'})">
+              <view class="icon-wrapper">
+                <view class="icon-emoji">📈</view>
+              </view>
+              <view class="icon-text">利润表</view>
+            </view>
+            <view class="icon-item" @click="goPage({url: '/admin/picText/picTextList'})">
+              <view class="icon-wrapper">
+                <view class="icon-emoji">🖼️</view>
+              </view>
+              <view class="icon-text">图文</view>
+            </view>
+            <view class="icon-item" @click="goPage({url: '/admin/order/scanPay'})">
+              <view class="icon-wrapper">
+                <view class="icon-emoji">📱</view>
+              </view>
+              <view class="icon-text">收款码流水</view>
+            </view>
+            <view class="icon-item" @click="goPage({url: '/admin/cg/code'})">
+              <view class="icon-wrapper">
+                <view class="icon-emoji">💳</view>
+              </view>
+              <view class="icon-text">收款码</view>
+            </view>
+            <view class="icon-item" @click="goPage({url: '/admin/hb/list'})">
+              <view class="icon-wrapper">
+                <view class="icon-emoji">🧧</view>
+              </view>
+              <view class="icon-text">红包管理</view>
+            </view>
+          </view>
+        </view>
+      </view>
+
+      <template v-if="lookMoney == 1">
+        <view class="module-com overview-module">
+          <view class="overview-header">
+            <view class="overview-title">📊 数据总览</view>
+          </view>
+          <view class="overview-grid">
+            <view class="overview-item" v-for="(item, index) in overview" :key="index" @click="pageTo(item)">
+              <view class="item-value">{{ $util.numberFormat(item.value) }}</view>
+              <view class="item-label">{{ item.name }}</view>
+            </view>
+          </view>
+        </view>
+      </template>
+
+    </view>
+  </block>
+
+  <uni-popup ref="mallOptionsPopup" type="center" mask-background-color="rgba(0,0,0,0.4)">
+    <view class="mall-options-container">
+      <view class="mall-options-buttons">
+        <view class="mall-option-btn" @click="copyMallLink">
+          <view class="option-icon">📋</view>
+          <text class="option-text">复制链接</text>
+        </view>
+        <view class="mall-option-btn" @click="openMallDirect">
+          <view class="option-icon">🚀</view>
+          <text class="option-text">直接打开</text>
+        </view>
+      </view>
+    </view>
+  </uni-popup>
+
+  <custom-tab-bar v-if="loginStyle == 2" :current="1" />
+</view>
+</template>
+<script>
+import { mapGetters } from "vuex";
+import { getWeixinId } from "@/api/invite";
+import { getShortUrl } from "@/api/main";
+import { getStat } from '@/api/console' //getStrokeCount 已弃用
+import { consoleIndex } from "@/api/workbench";
+import autoUpdateMixins from "@/mixins/autoUpdate";
+import { ghsList } from "@/api/purchase";
+import { changeDelStatus,hasMoreGhs } from "@/api/ghs";
+import {currentShop, uploadShopAvatar} from "@/api/shop";
+import { clearLogin,hasNotice } from "@/api/admin";
+import { unReadMsgCount } from "@/api/chat";
+import { APIHOST,CURRENT_ENV } from "@/config";
+export default {
+  name: "workbench",
+  mixins: [autoUpdateMixins],
+  data () {
+    return {
+      overview:[],
+      ad:[],
+      showAd:1,
+      constant: this.$constant,
+      getappIdList: {},
+      data: {
+        admin: {},
+        asset: {},
+        notice: {},
+        todayData: { income:0.00, order:0, custom:0, expend:0.00, visit:0 },
+        isMini:0
+      },
+      yesterdayIncome: 0,
+      supplierList: [],
+      //登录状态 0未登录 1登录仅用到了采购 2登录用到完整功能
+      loginStyle :0,
+      backAction:'',
+      lookMoney:1,
+      currentGhs:{},
+      displaySupplierList: [],// 用于显示在弹框中的供货商列表
+      shopInfo:[],
+      urlNo:1,
+      shortUrlList:[],
+      unReadMsgNum:0, //未读消息数
+      currentDate: '', // 当前日期信息 如:12月26号 周五
+    };
+  },
+  computed: {
+    ...mapGetters({ loginInfo: "getLoginInfo",dictInfo:"getDictionariesInfo",myShopInfo:"getMyShopInfo" })
+  },
+	watch: {
+		//只需要采购花材的花店不显示底部菜单
+		loginInfo(newVal) {
+      if(!this.$util.isEmpty(newVal.admin) && newVal.admin.currentShopId > 0){
+          if(!this.$util.isEmpty(newVal.onlyCg)){
+            this.handleLoginStyle(newVal.onlyCg)
+          }
+      }
+		}
+	},
+  onPullDownRefresh () {
+    this.init();
+    uni.stopPullDownRefresh();
+  },
+  onLoad(){
+		getWeixinId().then(res => {
+			this.getappIdList = res.data
+		})
+		this.updateCurrentDate()
+  },
+  onShow () {
+      this.unReadMsgNum = 0; // 重置未读消息数
+    
+      this.init();
+
+      // 判断是否登录
+      if(!this.$util.isEmpty(this.loginInfo.admin) && this.loginInfo.admin.currentShopId > 0){
+          if(!this.$util.isEmpty(this.loginInfo.onlyCg)){
+            this.handleLoginStyle(this.loginInfo.onlyCg)
+          }
+
+          // this.getUnReadMsgCount()
+          this.showShopName()
+      }
+  },
+	onShareAppMessage(res) {
+		return {
+			title: "花掌柜,花店管家婆",
+			desc: "",
+			imageUrl: "",
+			path: "admin/home/workbench",
+		}
+	},
+  methods: {
+    onChooseAvatar(e){
+      if(this.loginInfo && this.loginInfo.staff && this.loginInfo.staff.founder != 2){
+        this.$msg('门店LOGO请老板修改')
+        return
+      }
+      if(e && e.detail && e.detail.avatarUrl){
+        let avatarUrl = e.detail.avatarUrl
+        this.updateShopAvatar(avatarUrl)
+      }else{
+        this.$msg('获取头像失败')
+      }
+    },
+    updateShopAvatar(avatarUrl){
+      let token = uni.getStorageSync('token') || ''
+      let url = APIHOST + '/upload/save-file'
+      uni.uploadFile({
+        url: url,
+        filePath: avatarUrl,
+        name: 'file',
+        header: { token: token },
+        formData: {},
+        success: (res) => {
+          try{
+            const ret = JSON.parse(res.data)
+            if(ret.code == 1){
+              this.shopInfo.avatar = ret.data.shortUrl
+              this.$msg('头像已更新')
+              uni.setStorageSync('shopAvatar', this.shopInfo.avatar)
+
+              //请后端,上传新的头像地址,同步更新xhGhsCustom里面的头像地址
+              uploadShopAvatar({ id: this.shopInfo.id, avatar: ret.data.shortUrl }).then(res => {
+                if(res.code == 1){
+                  // this.$msg('头像上传成功')
+                }else{
+                  // this.$msg(res.msg || '上传失败')
+                  console.log(res.msg || '上传失败')
+                }
+              })
+            }else{
+              this.$msg(ret.msg || '上传失败')
+            }
+          }catch(err){
+            this.$msg('服务异常')
+          }
+        },
+        fail: () => {
+          this.$msg('上传失败')
+        }
+      })
+    },
+    shopAvatar(){
+      const avatar = (this.shopInfo && this.shopInfo.avatar) ? this.shopInfo.avatar : '/default_avatar.png?x-oss-process=image/resize,m_fill,h_130,w_130'
+      if(!avatar){
+        return ''
+      }
+      if(/^https?:\/\//i.test(avatar)){
+        return avatar
+      }
+      return this.$constant.imgUrl + (avatar.indexOf('/') === 0 ? avatar : ('/' + avatar))
+    },
+		buyItem() {
+			let that = this
+			// #ifdef MP-WEIXIN
+			uni.navigateToMiniProgram({
+				//姜枫-2021.04.13
+				appId: that.getappIdList.mall.miniAppId,
+				path: 'pages/home/recent',
+				//develop 开发版 trial 体验版 release 正式版
+				envVersion: process.env.NODE_ENV === 'development' ? 'develop' : 'release',
+				extraData: {},
+				success (res) {
+				}
+			})
+			// #endif
+			// #ifdef APP-PLUS
+				that.$msg("请用微信打开")
+			// #endif
+		},
+    init () {
+      this.getGHSList()
+
+      // #ifdef MP-WEIXIN
+      this.isMini = 1
+      // #endif
+      
+      consoleIndex({isMini:this.isMini}).then(res => {
+        this.data = res.data
+        this.lookMoney = res.data.lookMoney
+      })
+
+      getStat().then(res=>{
+        if(res.code == 1){
+          this.overview = res.data.overview
+        }
+      })
+      this.showShopName()
+      this.getUnReadMsgCount()
+    },
+    handleLoginStyle(onlyCg){
+      if(Number(onlyCg) == 1){
+        this.loginStyle  = 1
+        uni.hideTabBar({fail:()=>{}})
+        this.toRemindCustom()
+      }else{
+        this.loginStyle  = 2
+        uni.hideTabBar({fail:()=>{}})
+        this.getMallData()
+      }
+    },
+    getMallData(){
+      getShortUrl().then(res=>{
+        if(res.code == 1){
+          this.shortUrlList = res.data?res.data:[]
+        }
+      })
+    },
+    goItemKjKd(){
+      if(this.myShopInfo && Number(this.myShopInfo.defaultCustomId)>0){
+        this.$util.pageTo({url:'/admin/billing/index2?customId='+this.myShopInfo.defaultCustomId})
+      }else{
+        this.$msg('请设置快捷开单的对应客户')
+      }
+    },
+    goItemKd(){
+      this.$util.pageTo({url:'/admin/custom/selectCustom'})
+    },
+    goHsKjKd(){
+      if(this.myShopInfo && Number(this.myShopInfo.defaultCustomId)>0){
+        this.$util.pageTo({url:'/admin/billing/hs?customId='+this.myShopInfo.defaultCustomId})
+      }else{
+        this.$msg('请设置快捷开单的对应客户')
+      }
+    },
+    goHsKd(){
+      this.$util.pageTo({url:'/admin/custom/selectCustom?style=3'})
+    },
+    setRecharge(){
+      this.$util.pageTo({url:'/admin/recharge/discount'})
+    },
+    setMemberLevel(){
+      this.$util.pageTo({url:'/admin/member/level'})
+    },
+		closeToShow(){
+			this.$refs.toShowMore.close()
+		},
+    // 显示供货商提示弹框
+    showSupplierNotice() {
+      // 设置要显示的供货商列表,最多显示5个
+      this.displaySupplierList = this.supplierList.filter(item => item.name).slice(0, 5)
+      this.$refs.supplierNoticePopup.open('center')
+    },
+    // 关闭供货商提示弹框
+    closeSupplierNotice() {
+      this.$refs.supplierNoticePopup.close()
+      // 调用已有的接口标记已通知
+      hasNotice().then(res => { })
+    },
+    // 下次提醒
+    remindLater() {
+      this.$refs.supplierNoticePopup.close()
+      // 不调用hasNotice接口,保持提醒状态
+    },
+    getMore(info){
+			this.currentGhs = info
+			this.$refs.toShowMore.open('top')
+    },
+    callUp (ghs) {
+      let mobileList = []
+      if (!this.$util.isEmpty(ghs.telephone)){
+        mobileList.push(ghs.telephone)
+      }
+      if (!this.$util.isEmpty(ghs.telephone2)){
+        mobileList.push(ghs.telephone2)
+      }
+      if(this.$util.isEmpty(mobileList)){
+        this.$msg('没有联系电话')
+        return false
+      }
+			uni.showActionSheet({
+				itemList: mobileList,
+				success: function (respond) {
+					let currentIndex = respond.tapIndex
+					let mobile = mobileList[currentIndex]
+          uni.makePhoneCall({ phoneNumber: mobile })
+				}
+			})
+    },
+    toPhone(){
+			this.$util.pageTo({url: '/pagesPurchase/contact'})
+		},
+		showShopName(){
+			currentShop().then(res => {
+				if(res.code == 1){
+					let sjName = res.data.merchantName ? res.data.merchantName : ''
+					let shopName = res.data.shopName ? res.data.shopName : ''
+					let title = shopName == '首店' ? sjName : sjName+' '+shopName
+					uni.setNavigationBarTitle({ title: title })
+          this.shopInfo = res.data?res.data:[]
+          if(this.shopInfo.avatar) {
+            uni.setStorageSync('shopAvatar', this.shopInfo.avatar);
+          }else{
+            uni.setStorageSync('shopAvatar', '');
+          }
+				}
+			})
+		},
+    goMore(){
+      let that = this
+      let shopkeeper = this.loginInfo.staff && this.loginInfo.staff.founder == 2 //判断店主(老板)
+      let items = shopkeeper ? ['已删除商家', '改进建议', '开关商城', '想要这样的商城', '修改密码', '退出登录'] : ['已删除商家', '我已离职', '开关商城', '想要这样的商城', '修改密码', '退出登录'];
+      uni.showActionSheet({
+        itemList: items,
+        success: function (res) {
+          if(res.tapIndex == 0){
+            that.$util.pageTo({url: '/pagesPurchase/pb'})
+          }
+          if(res.tapIndex == 1){
+            if(shopkeeper){
+              // 店主显示改进建议
+              that.suggest()
+            }else{
+              // 员工显示离职
+              that.$util.pageTo({url: '/admin/staff/dimission'})
+            }
+          }
+          if(res.tapIndex == 2){
+            that.$util.pageTo({url:'/pagesPurchase/open'})
+          }
+          if(res.tapIndex == 3){
+            that.openPfShop()
+          }
+          if(res.tapIndex == 4){
+            that.$util.pageTo({url:'/admin/shop/password'})
+          }
+          if(res.tapIndex == 5){
+            that.$util.confirmModal({content:'确认退出?'},() => {
+              // #ifdef APP-PLUS
+              uni.clearStorage()
+              that.$store.commit("setLoginInfo", {})
+              plus.runtime.restart()
+              // #endif
+              // #ifdef MP-WEIXIN
+              clearLogin().then(res=>{
+                if(res.code == 1){
+                  uni.clearStorage()
+                  that.$store.commit("setLoginInfo", {})
+                  uni.reLaunch({url:'/admin/home/workbench'})
+                }
+              })
+              // #endif
+            })
+          }
+        }
+      });
+    },
+    openPfShop(){
+      this.pageTo({url: '/pagesPurchase/contact'})
+    },
+    suggest(){
+      this.pageTo({url: '/pagesPurchase/contact'})
+    },
+    bookItem(item){
+      const { id } = item
+      this.pageTo({url: '/pagesPurchase/bookProduct?id='+id})
+    },
+    goBalanceChange(info){
+      this.closeToShow()
+      this.pageTo({url: '/admin/ghs/balanceChange?ghsId='+info.id})
+    },
+    rechargeChange(){
+      this.closeToShow()
+      this.pageTo({url: '/admin/ghs/rechargeChange?ghsId='+this.currentGhs.id})
+    },
+    balanceChange(){
+      this.closeToShow()
+      this.pageTo({url: '/admin/ghs/balanceChange?ghsId='+this.currentGhs.id})
+    },
+    bpSj(){
+      let that = this
+      that.$util.confirmModal({content:'确认删除?删除后你不能再跟此批发店买花!!!!',okText:'确认'},() => {
+        that.confirmPb(that.currentGhs)
+			})
+    },
+    recharge(currentGhs){
+      this.pageTo({url: '/admin/ghs/pay?id='+currentGhs.id+'&salt='+currentGhs.salt})
+    },
+    confirmPb(ghs){
+      let that = this
+      changeDelStatus({delStatus:1,ghsId:ghs.id}).then(res=>{
+        if(res.code == 1){
+          that.closeToShow()
+          that.getGHSList()
+        }
+      })
+    },
+    fillCg(item){
+      this.pageTo({url:'/pagesPurchase/addCg?ghsId='+item.id+'&ghsName='+item.name})
+    },
+    goKmCg(currentGhs){
+      let self = this
+      // #ifdef MP-WEIXIN
+      uni.navigateToMiniProgram({
+        appId: currentGhs.kmCgAppId,
+        path: currentGhs.kmCgUrl,
+        //develop 开发版 trial 体验版 release 正式版
+        envVersion: process.env.NODE_ENV === 'development' ? 'develop' : 'release',
+        extraData: {},
+        success (res) {}
+      })
+      // #endif
+      // #ifdef APP-PLUS
+      self.$msg('开发中')
+      // #endif
+    },
+    enterShop(item) {
+      let that = this
+      if(item.isOpen == 0){
+        this.$msg('已休店,请选择其它门店')
+        return false
+      }
+      that.pageTo({url: '/pagesPurchase/ghsProduct?id='+item.id})
+    },
+    enterShop2(item) {
+      let that = this
+      if(item.isOpen == 0){
+        this.$msg('已休店,请选择其它门店')
+        return false
+      }
+      that.pageTo({url: '/pagesPurchase/ghsProduct2?id='+item.id})
+    },
+    whyHave(){
+      this.$util.confirmModal({content:'付款金额不足消欠款单时,存为余额下次使用'},() => {})
+    },
+    settleAccounts (item) {
+      this.pageTo({ url: '/pagesPurchase/gathering?id='+item.id})
+    },
+    gotoDetails (val) {
+      this.pageTo({ url: '/pagesPurchase/purDetails?status=' + val.status + '&id=' + val.id, type:2 })
+    },
+    getGHSList () {
+      return ghsList().then(res => {
+        this.supplierList = res.data.list
+        this.ad = res.data.ad ? res.data.ad : []
+        this.showAd = res.data.showAd ? res.data.showAd : 0
+      })
+    },
+    goPage (item) {
+      if(this.getLoginInfo.pfShopId && Number(this.getLoginInfo.pfShopId)>0){
+        if(item.pf == 0){
+          this.$msg('开发中')
+          return false
+        }
+      }
+      this.$util.pageTo(item)
+    },
+    toRemindCustom(){
+        if(this.loginStyle==1){
+          hasMoreGhs().then(ret=>{
+            if(ret.data.needNotice == 1){
+              this.showSupplierNotice()
+            }
+          })
+        }
+    },
+    noticeFn (item) {
+      this.$util.pageTo({ url: item.page })
+    },
+    goToWastage () {
+      this.$util.pageTo({url:'/admin/breakage/list'})
+    },
+    goToKindStat(){
+      this.$util.pageTo({url:'/admin/stat/kind'})
+    },
+    goToProfit () {
+      this.$util.pageTo({url:'/admin/stat/profit'})
+    },
+    // 显示商城选项弹框
+    showMallOptions(no) {
+      this.urlNo = no
+      this.$refs.mallOptionsPopup.open('center')
+    },
+    // 关闭商城选项弹框
+    closeMallOptions() {
+      this.$refs.mallOptionsPopup.close()
+    },
+    // 直接打开商城
+    openMallDirect() {
+      this.closeMallOptions()
+      let url = ''
+      //花束商城
+      if(this.urlNo == 1){
+        url = 'pages/home/category'
+      }
+      //相册
+      if(this.urlNo == 2){
+        url = 'pages/home/mall'
+      }
+      //绿植花材商城
+      if(this.urlNo == 3){
+        url = 'pages/item/item'
+      }
+      this.goToMallPt(url)
+    },
+    // 复制商城链接
+    copyMallLink() {
+      this.closeMallOptions()
+      let currentShortUrl = ''
+      let text = ""
+      //花束商城
+      if(this.urlNo == 1){
+        currentShortUrl = this.shortUrlList['goodsUrl']
+        text = "点击下面链接,打开商城\n\n"+currentShortUrl+"\n\n链接是我们小程序,放心点击"
+      }
+      //相册
+      if(this.urlNo == 2){
+        currentShortUrl = this.shortUrlList['imgUrl']
+        text = "点击下面链接,打开相册\n\n"+currentShortUrl+"\n\n链接是我们小程序,放心点击"
+      }
+      //绿植花材商城
+      if(this.urlNo == 3){
+        currentShortUrl = this.shortUrlList['itemUrl']
+        text = "点击下面链接,打开商城\n\n"+currentShortUrl+"\n\n链接是我们小程序,放心点击"
+      }
+      uni.setClipboardData({
+        data: text,
+        success: () => {
+          this.$msg('已复制')
+        },
+        fail: () => {
+          this.$msg('复制失败')
+        }
+      })
+    },
+    goToMallPt (url) {
+      // #ifdef MP-WEIXIN
+      let self = this
+      uni.navigateToMiniProgram({
+        appId: this.getappIdList.mall.miniAppId,
+        path: url + '?account=' + self.loginInfo.shopId,
+        //develop 开发版 trial 体验版 release 正式版
+        envVersion: process.env.NODE_ENV === 'development' ? 'develop' : 'release',
+        extraData: {
+          'hdShopAdminId': self.loginInfo.shopAdminId
+        },
+        success (res) {}
+      })
+      // #endif
+      // #ifdef APP-PLUS
+      let that = this
+
+      if(plus.runtime.isApplicationExist({pname:'com.tencent.mm',action:'weixin://'})){
+        plus.share.getServices(function(s){
+          var sweixin
+          for (var i = 0; i < s.length; i++) {
+            var t = s[i];
+            if (t.id == 'weixin') {
+                sweixin = t;
+            }
+          }
+          if (sweixin && sweixin.nativeClient) {
+            let miniOriginalId = that.dictInfo.miniOriginalId && that.dictInfo.miniOriginalId.current && that.dictInfo.miniOriginalId.current.mall ? that.dictInfo.miniOriginalId.current.mall : ''
+            console.log(miniOriginalId)
+            sweixin.launchMiniProgram({
+              id: miniOriginalId,
+              path: '/'+url+'?account='+that.loginInfo.shopId,
+              type: 0
+            });
+          } else {
+            that.$msg("没有找到微信服务")
+            //that.$msg("获取微信失败:" + e.message)
+            console.log(JSON.stringify(e));
+          }
+        }, function(e){
+            that.$msg("没有找到微信服务哦")
+            //that.$msg("获取微信失败:" + e.message)
+            console.log(JSON.stringify(e));
+        });
+      } else {
+				this.$msg("即将跳转小程序,请安装微信")
+				return false
+      }
+			// #endif
+    },
+    getUnReadMsgCount(){
+      unReadMsgCount().then(res=>{
+        if(res.code == 1){
+          this.unReadMsgNum = res.data.msg_count
+        }
+      })
+    },
+    updateCurrentDate(){
+      const now = new Date()
+      const month = now.getMonth() + 1
+      const date = now.getDate()
+      const weekDays = ['星期天', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
+      const week = weekDays[now.getDay()]
+      this.currentDate = `${month}-${date} ${week}`
+    }
+  }
+};
+</script>
+<style lang="scss" scoped>
+.app-content {
+  padding-bottom: 10upx;
+}
+.module-com {
+  margin-bottom: 37upx;
+  background-color: #fff;
+}
+
+// 功能网格部分 - 删除
+
+
+// 今日概况卡片 - 圆形气泡布局
+.today-overview-card {
+  background: linear-gradient(to right, #1ba85e 0%, #22C55E 50%, #16A34A 100%);
+  padding: 0;
+  margin: 0 0 -20upx 0;
+  overflow: visible;
+  border-radius: 0;
+  padding-bottom: 40upx;
+  
+  .bubble-header {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    padding: 20upx 24upx 24upx;
+    
+    .bubble-title {
+      font-size: 36upx;
+      font-weight: 700;
+      color: #ffffff;
+      letter-spacing: 0.5upx;
+    }
+    
+    .message-btn {
+      position: relative;
+      width: 56upx;
+      height: 56upx;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      background: rgba(255, 255, 255, 0.2);
+      border-radius: 50%;
+      
+      .msg-icon {
+        font-size: 32upx;
+        line-height: 1;
+      }
+      
+      .red-mind {
+        position: absolute;
+        top: -8upx;
+        right: -8upx;
+        width: 40upx;
+        height: 40upx;
+        line-height: 36upx;
+        font-size: 24upx;
+        font-weight: 700;
+        text-align: center;
+        color: white;
+        background-color: #ff2842;
+        border: 2upx solid #ffffff;
+        border-radius: 50%;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+      }
+    }
+  }
+  
+  .stat-grid {
+    display: flex;
+    justify-content: space-around;
+    align-items: center;
+    padding: 60upx 80upx 60upx;
+    width: 100%;
+    
+    .stat-item {
+      display: flex;
+      flex-direction: column;
+      align-items: center;
+      justify-content: center;
+      flex: 1;
+      
+      .stat-label {
+        font-size: 26upx;
+        color: rgba(255, 255, 255, 0.8);
+        margin-bottom: 12upx;
+      }
+      
+      .stat-value {
+        font-size: 40upx;
+        font-weight: 700;
+        color: #ffffff;
+        line-height: 1;
+      }
+    }
+  }
+}
+// 消息
+.news-wrap {
+  .news-list {
+    @include disFlex(center, space-between);
+    padding: 30upx 24upx 30upx 30upx;
+    border-bottom: 1px solid $borderColor;
+    font-size: 26upx;
+    color: $fontColor2;
+    &:active {
+      background-color: $backColor;
+    }
+    & > div {
+      @include disFlex(center, flex-start);
+    }
+    .news-left {
+      .iconfont {
+        color: $mainColor;
+        margin-right: 10upx;
+      }
+      .ling {
+        font-size: 28upx;
+      }
+      span{
+        font-size:29upx;
+      }
+    }
+    .news-right {
+      font-size: 26upx;
+      color: $mainColor;
+      transform: scale(0.9);
+      @include disFlex(flex-end, flex-start);
+      .iconfont {
+        font-size: 24upx;
+        margin-left: 10upx;
+        margin-bottom: 6upx;
+      }
+    }
+  }
+}
+// 数据总览模块
+.overview-module {
+  background: #ffffff;
+  border-radius: 16upx;
+  padding: 0;
+  overflow: hidden;
+  
+  .overview-header {
+    background: linear-gradient(135deg, #f8fafb 0%, #ffffff 100%);
+    padding: 30upx 30upx 20upx;
+    border-bottom: 1upx solid #f0f0f0;
+    
+    .overview-title {
+      font-size: 32upx;
+      font-weight: 600;
+      color: #333;
+      margin-bottom: 8upx;
+    }
+  }
+  
+  .overview-grid {
+    display: grid;
+    grid-template-columns: repeat(2, 1fr);
+    padding: 20upx;
+    gap: 16upx;
+    
+    .overview-item {
+      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(2n)) {
+        &::after {
+          content: '';
+          position: absolute;
+          right: 0;
+          top: 0;
+          transform: none;
+          width: 0;
+          height: 0;
+          background: transparent;
+        }
+      }
+      
+      &:nth-child(n+3) {
+        &::before {
+          content: '';
+          position: absolute;
+          left: 0;
+          right: 0;
+          top: 0;
+          height: 0;
+          background: transparent;
+        }
+      }
+      
+      &:active {
+        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: 40upx;
+        font-weight: 700;
+        color: #049E2C;
+        margin-bottom: 12upx;
+        line-height: 1;
+      }
+      
+      .item-label {
+        font-size: 26upx;
+        color: #666;
+        line-height: 1;
+        font-weight: 500;
+      }
+    }
+  }
+}
+// 新的花束花礼和绿植花材样式
+.flower-module {
+  padding: 0;
+  
+  .flower-section {
+    padding: 24upx 20upx;
+    background: #ffffff;
+    border-bottom: 12upx solid #f5f5f5;
+    
+    &:last-child {
+      border-bottom: none;
+    }
+    
+    .section-header {
+      display: flex;
+      align-items: center;
+      justify-content: flex-start;
+      margin-bottom: 24upx;
+      padding-left: 0;
+      
+      .header-title {
+        padding: 0;
+        font-size: 32upx;
+        font-weight: 700;
+        color: #333;
+        letter-spacing: 1upx;
+      }
+    }
+    
+    .icon-grid {
+      display: grid;
+      grid-template-columns: repeat(4, 1fr);
+      gap: 16upx;
+      max-width: 100%;
+      
+      .icon-item {
+        width: 100%;
+        padding: 12upx;
+        text-align: center;
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        gap: 8upx;
+        
+        .icon-wrapper {
+          width: 100upx;
+          height: 100upx;
+          display: flex;
+          align-items: center;
+          justify-content: center;
+          background: linear-gradient(135deg, #f0f9ff 0%, #e0f2fe 100%);
+          border-radius: 20upx;
+          
+          .icon-emoji {
+            font-size: 48upx;
+            line-height: 1;
+          }
+        }
+        
+        .icon-text {
+          font-size: 25upx;
+          color: #333;
+          line-height: 1.4;
+          font-weight: 500;
+        }
+      }
+    }
+  }
+}
+.order-page {
+.ghs_list_page {
+  background-color: rgba(255, 255, 255, 1);
+  position: relative;
+  width: 750upx; 
+  overflow: hidden;
+  .profile-section {
+    background-color: #09C567;
+    padding: 30upx 30upx 0upx 30upx;
+    border-radius: 0;
+    .profile-header {
+      display: flex;
+      align-items: center;
+      .avatar-container {
+        width: 120upx;
+        height: 120upx;
+        border-radius: 60upx;
+        overflow: hidden;
+        background-color: rgba(255,255,255,0.2);
+        border: 1upx solid #ffffff;
+        .avatar-button {
+          background: none !important;
+          border: none !important;
+          padding: 0 !important;
+          margin: 0 !important;
+          line-height: 1;
+          display: block;
+          width: 120upx;
+          height: 120upx;
+          color: transparent !important;
+          &::after { border: none !important; }
+        }
+        .avatar {
+          width: 120upx;
+          height: 120upx;
+          border-radius: 60upx;
+        }
+      }
+      .user-info {
+        flex: 1;
+        margin-left: 24upx;
+        .username {
+          display: block;
+          font-size: 36upx;
+          font-weight: bold;
+          color: #ffffff;
+        }
+        .user-id {
+          display: block;
+          margin-top: 6upx;
+          font-size: 26upx;
+          color: #ffffff;
+        }
+      }
+      .more-icon {
+        margin-left: 12upx;
+        width: 60upx;
+        height: 60upx;
+        border-radius: 30upx;
+        align-items: center;
+        justify-content: center;
+        display: flex;
+        // background: rgba(255,255,255,0.15);
+        // border: 1upx solid rgba(255,255,255,0.35);
+      }
+    }
+    .function-grid--overlay {
+      background: transparent;
+    }
+    .function-item--overlay {
+      border-color: rgba(255,255,255,0.5);
+      background: rgba(255,255,255,0.12);
+    }
+    .function-text--overlay {
+      color: #ffffff;
+    }
+  }
+  .flex-col {
+    display: flex;
+    flex-direction: column;
+  }
+  .flex-row {
+    display: flex;
+    flex-direction: row;
+  }
+  .justify-end {
+      display: flex;
+      justify-content: flex-end;
+  }
+  .justify-between {
+      display: flex;
+      justify-content: space-between;
+  }
+
+  .ghs_list_area {
+    width: 750upx;
+    background-color: #ece5e5;
+    .ghs_box {
+      background-color: rgba(255, 255, 255, 1);
+      position: relative;
+      width: 750upx;
+      height: auto;
+      margin-bottom:35upx;
+      .image-text_7 {
+        width: 674upx;
+        height: 120upx;
+        margin: 40upx 0 0 31upx;
+        .section_1 {
+          width: 120upx;
+          height: 120upx;
+          .logo{
+            width:120upx;
+            height:120upx;
+            border-radius:10upx;
+          }
+        }
+        .text-group_7 {
+          width: 533upx;
+          height: 99upx;
+          margin-top: 5upx;
+          .text_8 {
+            display:inline-block;
+            width: 550upx;
+            height: 38upx;
+            color: rgba(51, 51, 51, 1);
+            font-size: 36upx;
+            font-weight:bold;
+            text-align: left;
+            white-space: nowrap;
+            line-height:38upx;
+            overflow:hidden;
+          }
+          .text_9 {
+            width: 533upx;
+            height: 25upx;
+            overflow-wrap: break-word;
+            color: rgba(153, 153, 153, 1);
+            font-size: 28upx;
+            text-align: left;
+            white-space: nowrap;
+            line-height: 24upx;
+            margin-top: 10upx;
+          }
+        }
+      }
+      .box_4 {
+        background-color: rgba(238, 238, 238, 1);
+        width: 750upx;
+        height: 1upx;
+        margin-top: 40upx;
+      }
+      .box_9 {
+        width: 100%;
+        height: 60upx;
+        margin: 23upx 0 22upx 15upx;
+        .tag_2 {
+          background-color: rgba(255, 255, 255, 1);
+          border-radius: 8px;
+          height: 60upx;
+          line-height:60upx;
+          border: 2px solid rgba(221, 221, 221, 1);
+          color: rgba(51, 51, 51, 1);
+          font-size: 30upx;
+          margin:0 16upx 0 0;
+          text-align:center;
+          float:left;
+          padding-left:15upx;
+          padding-right:15upx;
+                  }
+        }
+        .box_6 {
+        background-color: rgb(248, 242, 242);
+        width: 750upx;
+        height:95upx;
+        .show_clear_area {
+          width: 247upx;
+          height: 29upx;
+          margin: 26upx 0 0 30upx;
+          .waite_clear_order {
+            width: 214upx;
+            height: 29upx;
+            overflow-wrap: break-word;
+            color: rgba(255, 40, 66, 1);
+            font-size: 31upx;
+            font-weight:bold;
+            text-align: left;
+            white-space: nowrap;
+            line-height: 29upx;
+          }
+        }
+        }
+        .button_4 {
+        height: 80upx;
+        line-height:80upx;
+        text-align:center;
+        background-color:#09C567;
+        background-size: 137upx 137upx;
+        width: 130upx;
+        position: absolute;
+        left: 570upx;
+        top: 95upx;
+        border-radius:39upx;
+        .text_13 {
+          color: rgba(255, 255, 255, 1);
+          font-size: 30upx;
+          font-weight:bold;
+        }
+      }
+      .button_5 {
+        height: 80upx;
+        line-height:80upx;
+        text-align:center;
+        background-color:#CCCCCC;
+        background-size: 137upx 137upx;
+        width: 130upx;
+        position: absolute;
+        left: 570upx;
+        top: 95upx;
+        border-radius:39upx;
+        .text_13 {
+          color: rgba(255, 255, 255, 1);
+          font-size: 30upx;
+          font-weight:bold;
+        }
+      }
+      .button_6 {
+        height: 80upx;
+        line-height:80upx;
+        text-align:center;
+        background-color:rgb(152, 153, 197);
+        background-size: 137upx 137upx;
+        width: 170upx;
+        position: absolute;
+        left: 540upx;
+        top: 95upx;
+        border-radius:39upx;
+        .text_13 {
+          color: rgba(255, 255, 255, 1);
+          font-size: 30upx;
+          font-weight:bold;
+        }
+      }
+      .button_7 {
+        height: 80upx;
+        line-height:80upx;
+        text-align:center;
+        background-color:#09C567;
+        background-size: 137upx 137upx;
+        width: 180upx;
+        position: absolute;
+        left: 330upx;
+        top: 95upx;
+        border-radius:39upx;
+        .text_13 {
+          color: rgba(255, 255, 255, 1);
+          font-size: 30upx;
+          font-weight:bold;
+        }
+      }
+    }
+  }
+}
+}
+
+/* 商城选项弹框样式 */
+.mall-options-container {
+  width: 600upx;
+  background-color: #fff;
+  border-radius: 24upx;
+  overflow: hidden;
+  animation: popup-in 0.3s ease-out;
+  
+  .mall-options-buttons {
+    padding: 50upx 40upx 50upx;
+    display: flex;
+    flex-direction: column;
+    gap: 40upx;
+    align-items: center;
+ 
+    .mall-option-btn {
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      padding: 32upx 40upx;
+      background-color: #f8f9fa;
+      border-radius: 20upx;
+      transition: all 0.2s ease;
+      width: 100%;
+      
+      &:active {
+        background-color: #e9ecef;
+        transform: scale(0.98);
+      }
+      
+      .option-icon {
+        font-size: 56upx;
+        margin-right: 30upx;
+        width: 70upx;
+        text-align: center;
+      }
+      
+      .option-text {
+        font-size: 42upx;
+        color: #333;
+        font-weight: 500;
+      }
+    }
+  }
+}
+
+@keyframes popup-in {
+  0% {
+    opacity: 0;
+    transform: scale(0.8) translateY(20upx);
+  }
+  100% {
+    opacity: 1;
+    transform: scale(1) translateY(0);
+  }
+}
+
+/* 供货商提示弹框样式 */
+.supplier-notice-popup {
+  .supplier-notice-container {
+    width: 650upx;
+    background-color: #fff;
+    border-radius: 20upx;
+    overflow: hidden;
+    
+    .supplier-notice-header {
+      padding: 40upx 30upx 20upx;
+      text-align: center;
+      background-color: #f8f9fa;
+      border-bottom: 1upx solid #e9ecef;
+      
+      .supplier-notice-title {
+        font-size: 36upx;
+        font-weight: bold;
+        color: #333;
+      }
+    }
+    
+    .supplier-notice-content {
+      padding: 20upx 0;
+      
+      .supplier-list {
+        padding: 0 30upx;
+        
+        .supplier-item {
+          display: flex;
+          align-items: center;
+          padding: 20upx 0;
+          border-bottom: 1upx solid #f0f0f0;
+          
+          &:last-child {
+            border-bottom: none;
+          }
+          
+          .supplier-icon {
+            width: 60upx;
+            height: 60upx;
+            background-color: #e3f2fd;
+            border-radius: 50%;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            font-size: 32upx;
+            margin-right: 20upx;
+          }
+          
+          .supplier-name {
+            font-size: 32upx;
+            color: #333;
+            flex: 1;
+            font-weight: 500;
+          }
+        }
+      }
+    }
+    
+    .supplier-notice-footer {
+      padding: 30upx;
+      text-align: center;
+      background-color: #f8f9fa;
+      border-top: 1upx solid #e9ecef;
+      
+      .supplier-notice-tip {
+        display: block;
+        font-size: 40upx;
+        font-weight: bold;
+        color: red;
+        margin-bottom: 30upx;
+        line-height: 1.4;
+      }
+      
+      .supplier-notice-buttons {
+        display: flex;
+        justify-content: space-between;
+        gap: 20upx;
+        
+        .admin-button-com {
+          flex: 1;
+          margin: 0;
+          padding: 20upx 0;
+          height: auto;
+          line-height: normal;
+          font-size: 34upx;
+          font-weight: bold;
+        }
+      }
+    }
+  }
+}
+
+// 警告提示区域样式
+.alert-card {
+  margin: 15upx 10upx;
+  border-radius: 16upx;
+  overflow: hidden;
+  box-shadow: 0 4upx 12upx rgba(0, 0, 0, 0.08);
+  transition: all 0.3s ease;
+  border: 3upx solid;
+  
+  &:active {
+    transform: translateY(2upx);
+    box-shadow: 0 2upx 8upx rgba(0, 0, 0, 0.06);
+  }
+  
+  .alert-content {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    padding: 30upx 18upx;
+    min-height: 100upx;
+    
+    .alert-text {
+      font-size: 36upx;
+      font-weight: 600;
+      line-height: 1.6;
+      text-align: center;
+      width: 100%;
+    }
+  }
+}
+
+.alert-card-error {
+  background-color: #ff6b6b;
+  border-color: #ff6b6b;
+  .alert-content {
+    .alert-text {
+      font-size:32upx;
+      color: white;
+    }
+  }
+}
+
+.warning-banner {
+  background-color: #ff6b6b;
+  border-radius: 8upx;
+  margin: 0upx 10upx 20upx 10upx;
+  padding: 20upx 24upx;
+  color: #ffffff;
+  font-size: 32upx;
+  font-weight: 600;
+  text-align: center;
+  line-height: 1.4;
+}
+</style>

+ 1 - 0
hdApp/src/admin/home/me.vue

@@ -187,6 +187,7 @@
         </view>
       </view>
     </uni-popup>
+    <custom-tab-bar :current="5" />
   </view>
 </template>
 <script>

+ 1 - 0
hdApp/src/admin/home/member.vue

@@ -66,6 +66,7 @@
 
     <NotLogin></NotLogin>
 
+    <custom-tab-bar :current="3" />
   </view>
 </template>
 <script>

+ 1 - 0
hdApp/src/admin/home/order.vue

@@ -163,6 +163,7 @@
       </view>
     </view>
 
+    <custom-tab-bar :current="2" />
   </view>
 </template>
 <script>

+ 175 - 0
hdApp/src/admin/home/orderItem.vue

@@ -0,0 +1,175 @@
+<template>
+  <view class="order-item-view" @click="clickItemEvent">
+    <view class="item-header">
+      <view class="title">
+        <image class="icon" :src="info.ghsAvatar" alt="" />
+        <text class="name">
+          <text v-if="info.status == 3" style="color:green;font-weight:bold;">{{ info.ghsName}}</text>
+          <text v-else>{{ info.ghsName}}</text>
+        </text>
+      </view>
+      <view v-if="info.refund == 2" class="status" style="color:red;border:1px solid red;border-radius:20upx;font-size:20upx;padding:5upx 12upx;margin-right:40upx;">有退款</view>
+      <view v-if="info.debt == 1" class="status" style="color:red;border:1px solid red;border-radius:20upx;font-size:20upx;padding:5upx 12upx;margin-right:40upx;">挂账</view>
+      <text v-if="info.book == 1" class="status"  style="color:white;border:1px solid #657cac;border-radius:20upx;font-size:20upx;padding:5upx 12upx;margin-right:40upx;background:#657cac;">预订单</text>
+      <view class="status" v-if="info.status == 3" style="color:green;font-weight:bold;">{{ getStatusName }} </view>
+      <view class="status" v-else-if="info.status == 5" style="color:red;font-weight:bold;font-size:30upx;">{{ getStatusName }} </view>
+      <view class="status" v-else>{{ getStatusName }} </view>
+    </view>
+    <view class="item-main" >
+      <view class="item-info">
+
+        <view class="info-row">
+          <text class="info-label"> 创建:</text>
+          <text class="info-value">{{ info.addTime ? info.addTime.substring(5, 16) : '' }}</text>
+        </view>
+
+        <view class="info-row" v-if="info.payTime!='0000-00-00 00:00:00'">
+          <text class="info-label"> 确认:</text>
+          <text class="info-value">{{ info.payTime ? info.payTime.substring(5, 16) : '' }}</text>
+        </view>
+
+        <view class="info-row">
+          <text class="info-label"> 单号:</text>
+          <text class="info-value">{{ info.orderSn }} </text>
+        </view>
+        <view class="info-row">
+          <text class="info-label"> 采购:</text>
+          <text class="info-value">{{ info.shopAdminName }} </text>
+        </view>
+        <view class="info-row">
+          <text class="info-label"> 数量:</text>
+          <text v-if="info.smallNum > 0" class="info-value">{{ info.bigNum }}/{{info.smallNum}}</text>
+          <text class="info-value">{{info.bigNum}}</text>
+        </view>
+      </view>
+      <view class="item-price">
+        
+            <view v-if="info.orderPrice == info.actPrice">¥{{ info.orderPrice ? parseFloat(info.orderPrice):0 }}</view>
+            <view v-else>
+              <text style="text-decoration: line-through;color:#847676;">¥{{ info.orderPrice ? parseFloat(info.orderPrice):0 }}</text>
+              <text style="margin-left:10upx;">¥{{ info.actPrice ? parseFloat(info.actPrice):0 }}</text>
+            </view>
+
+        <text class="iconfont iconxiangyou"></text>
+      </view>
+    </view>
+  </view>
+</template>
+<script>
+import { PURCHASE_ORDER_STATUS } from "@/utils/declare";
+export default {
+  props: {
+    info: {
+      required: true
+    }
+  },
+  data () {
+    return {
+      PURCHASE_ORDER_STATUS
+    };
+  },
+  computed: {
+    getStatusName () {
+      let statusName = "";
+
+      switch (this.info.status) {
+        case '1':
+          statusName = "待付款";
+          break;
+        case '2':
+          statusName = "待发货";
+          break;
+        case '3':
+          statusName = "配送中";
+          break;
+        case '4':
+          statusName = "已完成";
+          break;
+        case '5':
+          statusName = "已取消";
+          break;
+        default:
+          break;
+      }
+      return statusName;
+    }
+  },
+  methods: {
+    clickItemEvent () {
+      this.$emit("click", this.info);
+    }
+  }
+};
+</script>
+<style lang="scss" scoped>
+.order-item-view {
+  padding: 30upx 0;
+  margin-bottom: 20upx;
+  width: 100%;
+  background-color: #fff;
+  .item-header {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    margin-bottom: 20upx;
+    .title {
+      display: flex;
+      align-items: center;
+      flex: 1;
+      .icon {
+        margin: 0 20upx;
+        width: 50upx;
+        height: 50upx;
+        border-radius: 25upx;
+        border-radius: 50%;
+      }
+      .name {
+        font-size: 32upx;
+        font-weight: 600;
+        color: #333333;
+      }
+    }
+    .status {
+      flex-shrink: 0;
+      margin-right: 20upx;
+      color: $mainColor;
+    }
+  }
+  .item-main {
+    display: flex;
+    padding: 0 20upx;
+    box-sizing: border-box;
+    align-items: flex-end;
+    .item-info {
+      flex: 1;
+      font-size: 26upx;
+      .info-row {
+        margin-top: 12upx;
+        display: flex;
+        align-items: center;
+      }
+      .info-label {
+        font-weight: 400;
+        color: #999999;
+      }
+      .info-value {
+        font-weight: 400;
+        color: #333333;
+      }
+    }
+    .item-price {
+      display: flex;
+      align-items: center;
+      flex-shrink: 0;
+      font-size: 30upx;
+      font-weight: 600;
+      color: #333333;
+      .iconfont {
+        font-size: 28upx;
+        color: #999999;
+        margin-left: 10upx;
+      }
+    }
+  }
+}
+</style>

+ 1419 - 1671
hdApp/src/admin/home/workbench.vue

@@ -1,1845 +1,1593 @@
 <template>
-<view>
-  <block v-if="loginStyle  == 0">
-    <view style="width:100vw;text-align: center;">
-      <!-- #ifdef MP-WEIXIN -->
-      <view style="margin-top:50upx;font-size:34upx;margin-bottom:30upx;">个人买花</view>
-      <view><button class="admin-button-com big blue" style="width:240upx;" @click="buyItem">去买花</button></view>
-	    <!-- #endif -->
-      <view style="margin-top:100upx;font-size:34upx;margin-bottom:30upx;">花店登录</view>
-      <view><button class="admin-button-com big blue" style="width:240upx;" @click="pageTo({url:'/admin/home/login'})">去登录</button></view>
-      <view style="font-size:40upx;color:green;text-decoration: underline;margin-top:60upx;" @click="pageTo({url:'/pagesClient/official/apply'})">花店注册</view>
-    </view>
-  </block>
-  <block v-else>
-    <view class="app-main app-content" v-if="loginStyle  == 2">
-      <template v-if="lookMoney == 1">
-        <view class="today-overview-card">
-          <view class="bubble-header">
-            <view class="bubble-title">📊 数据看板</view>
-            <view class="message-btn" @click="pageTo({url:'/admin/chat/list'})">
-              <view class="msg-icon">💬</view>
-              <view class="red-mind" v-if="unReadMsgNum>0">{{ unReadMsgNum>9?'9+':unReadMsgNum }}</view>
-            </view>
-          </view>
-
-          <view class="stat-grid">
-
-            <view class="stat-item" @click.stop="pageTo({url:'/admin/stat/kdIncome'})">
-              <view class="stat-label" style="opacity: 0.8;">收入</view>
-              <view class="stat-value">{{ $util.numberFormat(data.todayData.income) }}</view>
-            </view>
-
-            <navigator
-              url="/admin/home/order"
-              open-type="switchTab"
-              class="stat-item"
-              @click.stop="pageTo({url:'/admin/home/order'})"
-            >
-              <view class="stat-label" style="opacity: 0.8;">订单</view>
-              <view class="stat-value">{{ $util.numberFormat(data.todayData.order) || 0 }}</view>
-            </navigator>
-
-            <view class="stat-item" @click.stop="pageTo({url:'/admin/custom/visit'})">
-              <view class="stat-label" style="opacity: 0.8;">客户</view>
-              <view class="stat-value">{{ $util.numberFormat(data.todayData.visit) || 0 }}</view>
-            </view>
-
-          </view>
-        </view>
-      </template>
-
-      <view class="module-com news-wrap">
-        <view class="news-list" v-for="(item, index) in data.notice" :key="index" @click="noticeFn(item)" >
-          <view class="news-left">
-            <i class="iconfont iconxiaoxi2 ling"></i>
-            <span>{{ item.title }}</span>
-          </view>
-          <view class="news-right">
-            <span>{{ item.action }}</span>
-            <i class="iconfont iconxiangyou"></i>
-          </view>
-        </view>
-      </view>
-
-      <view v-if="!$util.isEmpty(data.warning)" class="alert-card alert-card-error">
-        <view class="alert-content">
-          <view class="alert-text">{{ data.warning }}</view>
-        </view>
+  <view>
+    <block v-if="loginStyle  == 0">
+      <view style="width:100vw;text-align: center;">
+        <!-- #ifdef MP-WEIXIN -->
+        <view style="margin-top:50upx;font-size:34upx;margin-bottom:30upx;">个人买花</view>
+        <view><button class="admin-button-com big blue" style="width:240upx;" @click="buyItem">去买花</button></view>
+        <!-- #endif -->
+        <view style="margin-top:100upx;font-size:34upx;margin-bottom:30upx;">花店登录</view>
+        <view><button class="admin-button-com big blue" style="width:240upx;" @click="pageTo({url:'/admin/home/login'})">去登录</button></view>
+        <view style="font-size:40upx;color:green;text-decoration: underline;margin-top:60upx;" @click="pageTo({url:'/pagesClient/official/apply'})">花店注册</view>
       </view>
-
-      <view class="module-com flower-module">
-        <!-- 花束 -->
-        <view class="flower-section">
-          <view class="section-header">
-            <view class="header-title">🌹 绿植花束</view>
-          </view>
-          <view class="icon-grid">
-            <view class="icon-item" @click="goPage({url: '/admin/cg/mall'})">
-              <view class="icon-wrapper">
-                <view class="icon-emoji">🏪</view>
-              </view>
-              <view class="icon-text">商城</view>
-            </view>
-            <view class="icon-item" @click="goPage({url: '/admin/work/list'})">
-              <view class="icon-wrapper">
-                <view class="icon-emoji">✅</view>
-              </view>
-              <view class="icon-text">任务</view>
-            </view>
-            <view class="icon-item" @click="goHsKd">
-              <view class="icon-wrapper">
-                <view class="icon-emoji">📝</view>
-              </view>
-              <view class="icon-text">开单</view>
-            </view>
-            <view class="icon-item" @click="goHsKjKd">
-              <view class="icon-wrapper">
-                <view class="icon-emoji">⚡</view>
-              </view>
-              <view class="icon-text">快捷开单</view>
-            </view>
-            <view class="icon-item" @click="goPage({url: '/admin/goods/category'})">
-              <view class="icon-wrapper">
-                <view class="icon-emoji">📂</view>
-              </view>
-              <view class="icon-text">分类</view>
-            </view>
-            <view class="icon-item" @click="goPage({url: '/admin/goods/categorySort'})">
-              <view class="icon-wrapper">
-                <view class="icon-emoji">↕️</view>
-              </view>
-              <view class="icon-text">排序</view>
-            </view>
-            <view class="icon-item" @click="goPage({url: '/admin/goods/list'})">
-              <view class="icon-wrapper">
-                <view class="icon-emoji">🌸</view>
-              </view>
-              <view class="icon-text">绿植花束</view>
-            </view>
-            <view class="icon-item" @click="goPage({url: '/admin/goods/add'})">
-              <view class="icon-wrapper">
-                <view class="icon-emoji">➕</view>
-              </view>
-              <view class="icon-text">新增花束</view>
-            </view>
-          </view>
-        </view>
-
-        <!-- 花材 -->
-        <view class="flower-section">
-          <view class="section-header">
-            <view class="header-title">🌿 花材</view>
-          </view>
-          <view class="icon-grid">
-            <view class="icon-item" @click="goPage({url: '/admin/cg/item'})">
-              <view class="icon-wrapper">
-                <view class="icon-emoji">🏪</view>
-              </view>
-              <view class="icon-text">商城</view>
-            </view>
-            <view class="icon-item" @click="goPage({url: '/admin/item/list2'})">
-              <view class="icon-wrapper">
-                <view class="icon-emoji">🌿</view>
-              </view>
-              <view class="icon-text">花材</view>
-            </view>
-            <view class="icon-item" @click="goItemKd()">
-              <view class="icon-wrapper">
-                <view class="icon-emoji">📝</view>
-              </view>
-              <view class="icon-text">开单</view>
-            </view>
-            <view class="icon-item" @click="goItemKjKd()">
-              <view class="icon-wrapper">
-                <view class="icon-emoji">⚡</view>
-              </view>
-              <view class="icon-text">快捷开单</view>
-            </view>
-            <view class="icon-item" @click="goPage({url: '/admin/part/list'})">
-              <view class="icon-wrapper">
-                <view class="icon-emoji">✂️</view>
-              </view>
-              <view class="icon-text">拆散</view>
-            </view>
-            <view class="icon-item" @click="goPage({url: '/admin/changePrice/list2'})">
-              <view class="icon-wrapper">
-                <view class="icon-emoji">💰</view>
-              </view>
-              <view class="icon-text">改价</view>
-            </view>
-            <view class="icon-item" @click="goPage({url: '/pagesPurchase/shopping'})">
-              <view class="icon-wrapper">
-                <view class="icon-emoji">📊</view>
-              </view>
-              <view class="icon-text">买花记录</view>
-            </view>
-            <view class="icon-item" @click="goPage({url: '/pagesPurchase/order'})">
-              <view class="icon-wrapper">
-                <view class="icon-emoji">🛍️</view>
-              </view>
-              <view class="icon-text">买花</view>
-            </view>
-            <view class="icon-item" @click="goPage({url: '/admin/breakage/list'})">
-              <view class="icon-wrapper">
-                <view class="icon-emoji">🗑️</view>
-              </view>
-              <view class="icon-text">报损</view>
-            </view>
-            <view class="icon-item" @click="goPage({url: '/admin/itemClass/list'})">
-              <view class="icon-wrapper">
-                <view class="icon-emoji">📂</view>
+    </block>
+    <block v-else>
+      <view class="order-page">
+        <view class="ghs_list_page flex-col">
+          <view class="profile-section">
+            <view class="profile-header">
+              <view class="avatar-container">
+                <button
+                  class="avatar-button"
+                  open-type="chooseAvatar"
+                  @chooseavatar="onChooseAvatar"
+                >
+                  <image
+                    class="avatar"
+                    :src="shopAvatar()"
+                    mode="aspectFill"
+                  />
+                </button>
               </view>
-              <view class="icon-text">分类</view>
-            </view>
-          </view>
-        </view>
-
-        <!-- 更多 -->
-        <view class="flower-section">
-          <view class="section-header">
-            <view class="header-title">⚙️ 更多功能</view>
-          </view>
-          <view class="icon-grid">
-            <view class="icon-item" @click="goPage({url: '/admin/order/expend'})">
-              <view class="icon-wrapper">
-                <view class="icon-emoji">💰</view>
+              <view class="user-info" @click="pageTo({url:'/admin/home/edit'})">
+                <text class="username">{{ (shopInfo && shopInfo.shopName == '首店') ? (shopInfo.merchantName || '') : (((shopInfo && shopInfo.merchantName) ? shopInfo.merchantName : '') + (shopInfo && shopInfo.shopName ? (' ' + shopInfo.shopName) : '')) }}</text>
+                <text class="user-id">ID {{ shopInfo && shopInfo.id ? shopInfo.id : '' }}</text>
               </view>
-              <view class="icon-text">支出</view>
-            </view>
-            <view class="icon-item" @click="goPage({url: '/admin/staff/list'})">
-              <view class="icon-wrapper">
-                <view class="icon-emoji">👥</view>
-              </view>
-              <view class="icon-text">员工</view>
-            </view>
-            <view class="icon-item" @click="goPage({url: '/admin/stat/profit'})">
-              <view class="icon-wrapper">
-                <view class="icon-emoji">📈</view>
+              <view class="more-icon" @click="pageTo({url:'/admin/home/edit'})">
+                <zui-svg-icon icon="home-more" :width="26" color="#FFFFFF" />
               </view>
-              <view class="icon-text">利润表</view>
             </view>
-            <view class="icon-item" @click="goPage({url: '/admin/picText/picTextList'})">
-              <view class="icon-wrapper">
-                <view class="icon-emoji">🖼️</view>
-              </view>
-              <view class="icon-text">图文</view>
-            </view>
-            <view class="icon-item" @click="goPage({url: '/admin/order/scanPay'})">
-              <view class="icon-wrapper">
-                <view class="icon-emoji">📱</view>
+  
+            <view class="function-grid function-grid--overlay" style="padding: 25upx 0upx 30upx 0upx; display: flex; justify-content: space-around; gap: 12upx;">
+              <view class="function-item function-item--overlay" style="flex: 1; text-align: center; border: 1upx solid rgba(255,255,255,0.5); border-radius: 16upx; padding: 15upx 0;" @click="pageTo({url:'/admin/shop/myShop'})">
+                <view class="function-icon" style="font-size: 38upx; margin-bottom: 8upx;">
+                  🏪
+                </view>
+                <text class="function-text function-text--overlay" style="font-size: 22upx;">店铺管理</text>
               </view>
-              <view class="icon-text">收款码流水</view>
-            </view>
-            <view class="icon-item" @click="goPage({url: '/admin/cg/code'})">
-              <view class="icon-wrapper">
-                <view class="icon-emoji">💳</view>
+              <view class="function-item function-item--overlay" style="flex: 1; text-align: center; border: 1upx solid rgba(255,255,255,0.5); border-radius: 16upx; padding: 15upx 0;" @click="pageTo({url:'/admin/staff/list'})">
+                <view class="function-icon" style="font-size: 38upx; margin-bottom: 8upx;">
+                  👥
+                </view>
+                <text class="function-text function-text--overlay" style="font-size: 22upx;">我的员工</text>
               </view>
-              <view class="icon-text">收款码</view>
-            </view>
-            <view class="icon-item" @click="goPage({url: '/admin/hb/list'})">
-              <view class="icon-wrapper">
-                <view class="icon-emoji">🧧</view>
+              <view class="function-item function-item--overlay" style="flex: 1; text-align: center; border: 1upx solid rgba(255,255,255,0.5); border-radius: 16upx; padding: 15upx 0;" @click="pageTo({url:'/admin/shop/add?id='+loginInfo.shopId})">
+                <view class="function-icon" style="font-size: 38upx; margin-bottom: 8upx;">
+                  📍
+                </view>
+                <text class="function-text function-text--overlay" style="font-size: 22upx;">我的地址</text>
               </view>
-              <view class="icon-text">红包管理</view>
-            </view>
-          </view>
-        </view>
-      </view>
-
-      <template v-if="lookMoney == 1">
-        <view class="module-com overview-module">
-          <view class="overview-header">
-            <view class="overview-title">📊 数据总览</view>
-          </view>
-          <view class="overview-grid">
-            <view class="overview-item" v-for="(item, index) in overview" :key="index" @click="pageTo(item)">
-              <view class="item-value">{{ $util.numberFormat(item.value) }}</view>
-              <view class="item-label">{{ item.name }}</view>
-            </view>
-          </view>
-        </view>
-      </template>
-
-    </view>
-
-    <!--  ========== 简化功能界面  ========== -->
-    <view class="order-page" v-else>
-      <view class="ghs_list_page flex-col">
-        <view class="profile-section">
-          <view class="profile-header">
-            <view class="avatar-container">
-              <button
-                class="avatar-button"
-                open-type="chooseAvatar"
-                @chooseavatar="onChooseAvatar"
-              >
-                <image
-                  class="avatar"
-                  :src="shopAvatar()"
-                  mode="aspectFill"
-                />
-              </button>
-            </view>
-            <view class="user-info" @click="pageTo({url:'/admin/home/edit'})">
-              <text class="username">{{ (shopInfo && shopInfo.shopName == '首店') ? (shopInfo.merchantName || '') : (((shopInfo && shopInfo.merchantName) ? shopInfo.merchantName : '') + (shopInfo && shopInfo.shopName ? (' ' + shopInfo.shopName) : '')) }}</text>
-              <text class="user-id">ID {{ shopInfo && shopInfo.id ? shopInfo.id : '' }}</text>
-            </view>
-            <view class="more-icon" @click="pageTo({url:'/admin/home/edit'})">
-              <zui-svg-icon icon="home-more" :width="26" color="#FFFFFF" />
-            </view>
-          </view>
-
-          <view class="function-grid function-grid--overlay" style="padding: 25upx 0upx 30upx 0upx; display: flex; justify-content: space-around; gap: 12upx;">
-            <view class="function-item function-item--overlay" style="flex: 1; text-align: center; border: 1upx solid rgba(255,255,255,0.5); border-radius: 16upx; padding: 15upx 0;" @click="pageTo({url:'/admin/shop/myShop'})">
-              <view class="function-icon" style="font-size: 38upx; margin-bottom: 8upx;">
-                🏪
+              <view class="function-item function-item--overlay" style="flex: 1; text-align: center; border: 1upx solid rgba(255,255,255,0.5); border-radius: 16upx; padding: 15upx 0;" @click="pageTo({url:'/admin/stat/cgItem'})">
+                <view class="function-icon" style="font-size: 38upx; margin-bottom: 8upx;">
+                  📊
+                </view>
+                <text class="function-text function-text--overlay" style="font-size: 22upx;">采购统计</text>
               </view>
-              <text class="function-text function-text--overlay" style="font-size: 22upx;">店铺管理</text>
-            </view>
-            <view class="function-item function-item--overlay" style="flex: 1; text-align: center; border: 1upx solid rgba(255,255,255,0.5); border-radius: 16upx; padding: 15upx 0;" @click="pageTo({url:'/admin/staff/list'})">
-              <view class="function-icon" style="font-size: 38upx; margin-bottom: 8upx;">
-                👥
+              <view class="function-item function-item--overlay" style="flex: 1; text-align: center; border: 1upx solid rgba(255,255,255,0.5); border-radius: 16upx; padding: 15upx 0;" @click="goMore()">
+                <view class="function-icon" style="font-size: 38upx; margin-bottom: 8upx;">
+                  ⋯
+                </view>
+                <text class="function-text function-text--overlay" style="font-size: 22upx;">更多</text>
               </view>
-              <text class="function-text function-text--overlay" style="font-size: 22upx;">我的员工</text>
             </view>
-            <view class="function-item function-item--overlay" style="flex: 1; text-align: center; border: 1upx solid rgba(255,255,255,0.5); border-radius: 16upx; padding: 15upx 0;" @click="pageTo({url:'/admin/shop/add?id='+loginInfo.shopId})">
-              <view class="function-icon" style="font-size: 38upx; margin-bottom: 8upx;">
-                📍
-              </view>
-              <text class="function-text function-text--overlay" style="font-size: 22upx;">我的地址</text>
+  
             </view>
-            <view class="function-item function-item--overlay" style="flex: 1; text-align: center; border: 1upx solid rgba(255,255,255,0.5); border-radius: 16upx; padding: 15upx 0;" @click="pageTo({url:'/admin/stat/cgItem'})">
-              <view class="function-icon" style="font-size: 38upx; margin-bottom: 8upx;">
-                📊
+            <view style="text-align:center;font-size:28upx;color:#666;padding:16upx 30upx;margin:0 20upx;background:white;border-radius:30upx;">
+              <view style="display:inline-flex;align-items:center;background:#fff;padding:10upx 25upx;border-radius:20upx;box-shadow:0 2upx 8upx rgba(0,0,0,0.05);">
+                <text style="color:#333;font-weight:500;font-size:28upx;">{{ loginInfo.admin && loginInfo.admin.name ? loginInfo.admin.name : '' }}</text>
+                <text style="margin:0 15upx;color:#eee;">|</text>
+                <text style="color:#666;font-size:28upx;">{{ loginInfo.admin && loginInfo.admin.mobile ? loginInfo.admin.mobile : '' }}</text>
               </view>
-              <text class="function-text function-text--overlay" style="font-size: 22upx;">采购统计</text>
             </view>
-            <view class="function-item function-item--overlay" style="flex: 1; text-align: center; border: 1upx solid rgba(255,255,255,0.5); border-radius: 16upx; padding: 15upx 0;" @click="goMore()">
-              <view class="function-icon" style="font-size: 38upx; margin-bottom: 8upx;">
-                ⋯
+  
+            <view v-if="!$util.isEmpty(data.warning)" class="warning-banner">{{ data.warning }}</view>
+  
+          <template v-if="!$util.isEmpty(ad)">
+            <block v-for="(adInfo, adIndex) in ad" :key="adIndex">
+              <view style="text-align:center;" @click.stop="pageTo({url:adInfo.url})">
+                <image :src="adInfo.banner" mode="widthFix" style="width:97%;margin:0 auto;"></image>
               </view>
-              <text class="function-text function-text--overlay" style="font-size: 22upx;">更多</text>
-            </view>
-          </view>
-
-          </view>
-          <view style="text-align:center;font-size:28upx;color:#666;padding:16upx 30upx;margin:0 20upx;background:white;border-radius:30upx;">
-            <view style="display:inline-flex;align-items:center;background:#fff;padding:10upx 25upx;border-radius:20upx;box-shadow:0 2upx 8upx rgba(0,0,0,0.05);">
-              <text style="color:#333;font-weight:500;font-size:28upx;">{{ loginInfo.admin && loginInfo.admin.name ? loginInfo.admin.name : '' }}</text>
-              <text style="margin:0 15upx;color:#eee;">|</text>
-              <text style="color:#666;font-size:28upx;">{{ loginInfo.admin && loginInfo.admin.mobile ? loginInfo.admin.mobile : '' }}</text>
-            </view>
-          </view>
-
-          <view v-if="!$util.isEmpty(data.warning)" class="warning-banner">{{ data.warning }}</view>
-
-        <template v-if="!$util.isEmpty(ad)">
-          <block v-for="(adInfo, adIndex) in ad" :key="adIndex">
-            <view style="text-align:center;" @click.stop="pageTo({url:adInfo.url})">
-              <image :src="adInfo.banner" mode="widthFix" style="width:97%;margin:0 auto;"></image>
-            </view>
-          </block>
-        </template>
-
-        <template v-if="!$util.isEmpty(supplierList)">
-          <view class="ghs_list_area flex-col justify-end">
-              <view class="ghs_box flex-col justify-end" v-for="(ghsInfo, index) in supplierList" :key="index">
-                <view class="image-text_7 flex-row justify-between">
-                  <view class="section_1 flex-col">
-                    <image class="logo" :src="ghsInfo.smallAvatar" @click="enterShop(ghsInfo)" />
-                  </view>
-                  <view class="text-group_7 flex-col justify-between" @click="enterShop(ghsInfo)">
-                    <text class="text_8">{{ghsInfo.name}}</text>
-                    <text class="text_9">
-
-                      <block v-if="ghsInfo.cutStyle && ghsInfo.cutStyle == 1">
-                        <block v-if="ghsInfo.meetNum>0 || ghsInfo.meetAmount>0">
-                          <text style="color:red;font-weight:bold;" v-if="ghsInfo.cutAmount>0">
-                            满<text v-if="ghsInfo.meetNum>0">{{ghsInfo.meetNum?ghsInfo.meetNum:0}}扎</text>
-                            <text v-if="ghsInfo.meetAmount>0"><text v-if="ghsInfo.meetNum>0">和</text>{{ghsInfo.meetAmount?ghsInfo.meetAmount:0}}元</text>{{ghsInfo.cutAmount?parseFloat(ghsInfo.cutAmount*100).toString().replace(/0/g,''):0}}折
-                          </text>
+            </block>
+          </template>
+  
+          <template v-if="!$util.isEmpty(supplierList)">
+            <view class="ghs_list_area flex-col justify-end">
+                <view class="ghs_box flex-col justify-end" v-for="(ghsInfo, index) in supplierList" :key="index">
+                  <view class="image-text_7 flex-row justify-between">
+                    <view class="section_1 flex-col">
+                      <image class="logo" :src="ghsInfo.smallAvatar" @click="enterShop(ghsInfo)" />
+                    </view>
+                    <view class="text-group_7 flex-col justify-between" @click="enterShop(ghsInfo)">
+                      <text class="text_8">{{ghsInfo.name}}</text>
+                      <text class="text_9">
+  
+                        <block v-if="ghsInfo.cutStyle && ghsInfo.cutStyle == 1">
+                          <block v-if="ghsInfo.meetNum>0 || ghsInfo.meetAmount>0">
+                            <text style="color:red;font-weight:bold;" v-if="ghsInfo.cutAmount>0">
+                              满<text v-if="ghsInfo.meetNum>0">{{ghsInfo.meetNum?ghsInfo.meetNum:0}}扎</text>
+                              <text v-if="ghsInfo.meetAmount>0"><text v-if="ghsInfo.meetNum>0">和</text>{{ghsInfo.meetAmount?ghsInfo.meetAmount:0}}元</text>{{ghsInfo.cutAmount?parseFloat(ghsInfo.cutAmount*100).toString().replace(/0/g,''):0}}折
+                            </text>
+                          </block>
                         </block>
-                      </block>
-                      <block v-else>
-                        <block v-if="ghsInfo.meetNum>0 || ghsInfo.meetAmount>0">
-                          <text style="color:red;font-weight:bold;" v-if="ghsInfo.cutAmount>0">
-                            满<text v-if="ghsInfo.meetNum>0">{{ghsInfo.meetNum?ghsInfo.meetNum:0}}扎</text>
-                            <text v-if="ghsInfo.meetAmount>0"><text v-if="ghsInfo.meetNum>0">和</text>{{ghsInfo.meetAmount?ghsInfo.meetAmount:0}}元</text>优惠{{ghsInfo.cutAmount?parseFloat(ghsInfo.cutAmount):0}}元
-                          </text>
+                        <block v-else>
+                          <block v-if="ghsInfo.meetNum>0 || ghsInfo.meetAmount>0">
+                            <text style="color:red;font-weight:bold;" v-if="ghsInfo.cutAmount>0">
+                              满<text v-if="ghsInfo.meetNum>0">{{ghsInfo.meetNum?ghsInfo.meetNum:0}}扎</text>
+                              <text v-if="ghsInfo.meetAmount>0"><text v-if="ghsInfo.meetNum>0">和</text>{{ghsInfo.meetAmount?ghsInfo.meetAmount:0}}元</text>优惠{{ghsInfo.cutAmount?parseFloat(ghsInfo.cutAmount):0}}元
+                            </text>
+                          </block>
                         </block>
-                      </block>
-
-                    </text>
-                  </view>
-                </view>
-                <view class="box_4 flex-col"></view>
-                <view class="box_9">
-                  <view class="tag_2" @click="pageTo({ url: '/admin/ghs/debtChange?ghsId='+ghsInfo.id})"> <text>挂账变动记录</text> </view>
-                  <view class="tag_2" @click="pageTo({ url: '/admin/clear/list?ghsId='+ghsInfo.id})"> <text>结账记录</text> </view>
-                  <view class="tag_2" @click="pageTo({url:'/pagesPurchase/shopping?ghsId='+ghsInfo.id+'&ghsName='+ghsInfo.name})"> <text>买花记录</text> </view>
-                  <view class="tag_2" @click.stop="callUp(ghsInfo)" style="color:green;font-weight:bold;"> <text>联系我们</text> </view>
-                </view>
-                <view class="box_6 flex-row" @click="settleAccounts(ghsInfo)" v-if="Number(ghsInfo.debtAmount)>0">
-                  <view class="show_clear_area flex-row justify-between">
-                    <text class="waite_clear_order">
-                      待结订单 {{ghsInfo.debtNum}}笔 合计¥{{ghsInfo.debtAmount?parseFloat(ghsInfo.debtAmount):0}}
-                      <text style="margin-left:30upx;" v-if="ghsInfo.remainDebtAmount>0">选订单结 》</text>
-                    </text>
-                  </view>
-                </view>
-
-                <block v-if="Number(ghsInfo.balance)>0">
-                  <view class="box_6 flex-row" v-if="ghsInfo.remainDebtAmount>0" @click.stop="recharge(ghsInfo)">
-                    <view class="show_clear_area flex-row justify-between">
-                      <text class="waite_clear_order" style="color:#3385ff;">
-                          <text v-if="Number(ghsInfo.balance)>0">减去余额¥{{ ghsInfo.balance ? parseFloat(ghsInfo.balance) : 0 }}</text>
-                          <text v-if="ghsInfo.remainDebtAmount>0" style="margin-left:15upx;">实欠¥{{ ghsInfo.remainDebtAmount }}</text>
-                          <text style="margin-left:30upx;">按金额结 》</text>
+  
                       </text>
                     </view>
                   </view>
-
-                  <view class="box_6 flex-row" v-if="ghsInfo.remainDebtAmount<0" @click.stop="recharge(ghsInfo)">
+                  <view class="box_4 flex-col"></view>
+                  <view class="box_9">
+                    <view class="tag_2" @click="pageTo({ url: '/admin/ghs/debtChange?ghsId='+ghsInfo.id})"> <text>挂账变动记录</text> </view>
+                    <view class="tag_2" @click="pageTo({ url: '/admin/clear/list?ghsId='+ghsInfo.id})"> <text>结账记录</text> </view>
+                    <view class="tag_2" @click.stop="callUp(ghsInfo)" style="color:green;font-weight:bold;"> <text>联系我们</text> </view>
+                  </view>
+                  <view class="box_6 flex-row" @click="settleAccounts(ghsInfo)" v-if="Number(ghsInfo.debtAmount)>0">
                     <view class="show_clear_area flex-row justify-between">
-                      <text class="waite_clear_order" style="color:#3385ff;">
-                          <text>账户余额¥{{ Math.abs(ghsInfo.remainDebtAmount) }}</text>
-                          <text style="margin-left:30upx;">已结清</text>
+                      <text class="waite_clear_order">
+                        待结订单 {{ghsInfo.debtNum}}笔 合计¥{{ghsInfo.debtAmount?parseFloat(ghsInfo.debtAmount):0}}
+                        <text style="margin-left:30upx;" v-if="ghsInfo.remainDebtAmount>0">选订单结 》</text>
                       </text>
                     </view>
                   </view>
-                </block>
-
-                <block v-if="ghsInfo.live == 1">
-                  <view class="button_7 flex-col" @click.stop="goKmCg(ghsInfo)" v-if="ghsInfo.openKmCg && ghsInfo.openKmCg == 1"><text class="text_13">昆明直采</text></view>
-                  <view class="button_4 flex-col" v-if="ghsInfo.isOpen == 1" @click="enterShop(ghsInfo)"><text class="text_13">买花</text></view>
-                  <view class="button_5 flex-col" v-else @click="enterShop(ghsInfo)"><text class="text_13">买花</text></view>
-                </block>
-                <block v-else>
-                  <view class="button_6 flex-col" @click="fillCg(ghsInfo)"><text class="text_13">买花</text></view>
-                </block>
-                <text style="position:absolute;left:677upx;top:17upx;color:#CCCCCC;" @click.stop="getMore(ghsInfo)">更多</text>
-              </view>
+  
+                  <block v-if="Number(ghsInfo.balance)>0">
+                    <view class="box_6 flex-row" v-if="ghsInfo.remainDebtAmount>0" @click.stop="recharge(ghsInfo)">
+                      <view class="show_clear_area flex-row justify-between">
+                        <text class="waite_clear_order" style="color:#3385ff;">
+                            <text v-if="Number(ghsInfo.balance)>0">减去余额¥{{ ghsInfo.balance ? parseFloat(ghsInfo.balance) : 0 }}</text>
+                            <text v-if="ghsInfo.remainDebtAmount>0" style="margin-left:15upx;">实欠¥{{ ghsInfo.remainDebtAmount }}</text>
+                            <text style="margin-left:30upx;">按金额结 》</text>
+                        </text>
+                      </view>
+                    </view>
+  
+                    <view class="box_6 flex-row" v-if="ghsInfo.remainDebtAmount<0" @click.stop="recharge(ghsInfo)">
+                      <view class="show_clear_area flex-row justify-between">
+                        <text class="waite_clear_order" style="color:#3385ff;">
+                            <text>账户余额¥{{ Math.abs(ghsInfo.remainDebtAmount) }}</text>
+                            <text style="margin-left:30upx;">已结清</text>
+                        </text>
+                      </view>
+                    </view>
+                  </block>
+  
+                  <block v-if="ghsInfo.live == 1">
+                    <view class="button_7 flex-col" @click.stop="goKmCg(ghsInfo)" v-if="ghsInfo.openKmCg && ghsInfo.openKmCg == 1"><text class="text_13">昆明直采</text></view>
+                    <view class="button_4 flex-col" v-if="ghsInfo.isOpen == 1" @click="enterShop(ghsInfo)"><text class="text_13">买花</text></view>
+                    <view class="button_5 flex-col" v-else @click="enterShop(ghsInfo)"><text class="text_13">买花</text></view>
+                  </block>
+                  <block v-else>
+                    <view class="button_6 flex-col" @click="fillCg(ghsInfo)"><text class="text_13">买花</text></view>
+                  </block>
+                  <text style="position:absolute;left:677upx;top:17upx;color:#CCCCCC;" @click.stop="getMore(ghsInfo)">更多</text>
+                </view>
+            </view>
+          </template>
+          <block v-else>
+            <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:30upx;">
+            <text style="margin-right:20upx;" @click="toPhone()">厦门中花汇技术支持</text>
+            <text style="margin-right:20upx;">|</text>
+            <text @click="toPhone()">联系软件公司</text>
           </view>
-        </template>
-        <block v-else>
-          <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:30upx;">
-          <text style="margin-right:20upx;" @click="toPhone()">厦门中花汇技术支持</text>
-          <text style="margin-right:20upx;">|</text>
-          <text @click="toPhone()">联系软件公司</text>
+  
         </view>
-
       </view>
-    </view>
-  </block>
-  <uni-popup ref="toShowMore" background-color="#fff" type="center" :animation="true" class="class-popup-style">
-    <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:30upx;"><button @click="closeToShow()">取消</button></view>
-    </view>
-  </uni-popup>
-
-  <!-- 多供货商提示弹框 -->
-  <uni-popup ref="supplierNoticePopup" background-color="#fff" type="center" :animation="true" class="supplier-notice-popup">
-    <view class="supplier-notice-container">
-      <!-- 头部 -->
-      <view class="supplier-notice-header">
-        <text class="supplier-notice-title">您已有多个供货商</text>
+    </block>
+    <uni-popup ref="toShowMore" background-color="#fff" type="center" :animation="true" class="class-popup-style">
+      <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:30upx;"><button @click="closeToShow()">取消</button></view>
       </view>
-      
-      <!-- 中间供货商列表 -->
-      <view class="supplier-notice-content">
-        <view class="supplier-list">
-          <view class="supplier-item" v-for="(supplier, index) in displaySupplierList" :key="index">
-            <view class="supplier-icon">🏪</view>
-            <text class="supplier-name">{{ supplier.name }}</text>
+    </uni-popup>
+  
+    <!-- 多供货商提示弹框 -->
+    <uni-popup ref="supplierNoticePopup" background-color="#fff" type="center" :animation="true" class="supplier-notice-popup">
+      <view class="supplier-notice-container">
+        <!-- 头部 -->
+        <view class="supplier-notice-header">
+          <text class="supplier-notice-title">您已有多个供货商</text>
+        </view>
+        
+        <!-- 中间供货商列表 -->
+        <view class="supplier-notice-content">
+          <view class="supplier-list">
+            <view class="supplier-item" v-for="(supplier, index) in displaySupplierList" :key="index">
+              <view class="supplier-icon">🏪</view>
+              <text class="supplier-name">{{ supplier.name }}</text>
+            </view>
           </view>
         </view>
-      </view>
-      
-      <!-- 底部提示 -->
-      <view class="supplier-notice-footer">
-        <text class="supplier-notice-tip">买花时注意区分,避免下错</text>
-        <view class="supplier-notice-buttons">
-          <button class="admin-button-com default" @click="remindLater">下次提醒</button>
-          <button class="admin-button-com blue" @click="closeSupplierNotice">知道了</button>
+        
+        <!-- 底部提示 -->
+        <view class="supplier-notice-footer">
+          <text class="supplier-notice-tip">买花时注意区分,避免下错</text>
+          <view class="supplier-notice-buttons">
+            <button class="admin-button-com default" @click="remindLater">下次提醒</button>
+            <button class="admin-button-com blue" @click="closeSupplierNotice">知道了</button>
+          </view>
         </view>
       </view>
-    </view>
-  </uni-popup>
-  
-  <!-- 商城选项弹框 -->
-  <uni-popup ref="mallOptionsPopup" type="center" mask-background-color="rgba(0,0,0,0.4)">
-    <view class="mall-options-container">
-      <view class="mall-options-buttons">
-        <view class="mall-option-btn" @click="copyMallLink">
-          <view class="option-icon">📋</view>
-          <text class="option-text">复制链接</text>
-        </view>
-        <view class="mall-option-btn" @click="openMallDirect">
-          <view class="option-icon">🚀</view>
-          <text class="option-text">直接打开</text>
+    </uni-popup>
+    
+    <!-- 商城选项弹框 -->
+    <uni-popup ref="mallOptionsPopup" type="center" mask-background-color="rgba(0,0,0,0.4)">
+      <view class="mall-options-container">
+        <view class="mall-options-buttons">
+          <view class="mall-option-btn" @click="copyMallLink">
+            <view class="option-icon">📋</view>
+            <text class="option-text">复制链接</text>
+          </view>
+          <view class="mall-option-btn" @click="openMallDirect">
+            <view class="option-icon">🚀</view>
+            <text class="option-text">直接打开</text>
+          </view>
         </view>
       </view>
-    </view>
-  </uni-popup>
-
-</view>
-</template>
-<script>
-import { mapGetters } from "vuex";
-import { getWeixinId } from "@/api/invite";
-import { getShortUrl } from "@/api/main";
-import { getStat } from '@/api/console' //getStrokeCount 已弃用
-import { consoleIndex } from "@/api/workbench";
-import autoUpdateMixins from "@/mixins/autoUpdate";
-import { ghsList } from "@/api/purchase";
-import { changeDelStatus,hasMoreGhs } from "@/api/ghs";
-import {currentShop, uploadShopAvatar} from "@/api/shop";
-import { clearLogin,hasNotice } from "@/api/admin";
-import { unReadMsgCount } from "@/api/chat";
-import { APIHOST,CURRENT_ENV } from "@/config";
-export default {
-  name: "workbench",
-  mixins: [autoUpdateMixins],
-  data () {
-    return {
-      overview:[],
-      ad:[],
-      showAd:1,
-      constant: this.$constant,
-      getappIdList: {},
-      data: {
-        admin: {},
-        asset: {},
-        notice: {},
-        todayData: { income:0.00, order:0, custom:0, expend:0.00, visit:0 },
-        isMini:0
-      },
-      yesterdayIncome: 0,
-      supplierList: [],
-      //登录状态 0未登录 1登录仅用到了采购 2登录用到完整功能
-      loginStyle :0,
-      backAction:'',
-      lookMoney:1,
-      currentGhs:{},
-      displaySupplierList: [],// 用于显示在弹框中的供货商列表
-      shopInfo:[],
-      urlNo:1,
-      shortUrlList:[],
-      unReadMsgNum:0, //未读消息数
-      currentDate: '', // 当前日期信息 如:12月26号 周五
-    };
-  },
-  computed: {
-    ...mapGetters({ loginInfo: "getLoginInfo",dictInfo:"getDictionariesInfo",myShopInfo:"getMyShopInfo" })
-  },
-	watch: {
-		//只需要采购花材的花店不显示底部菜单
-		loginInfo(newVal) {
-      if(!this.$util.isEmpty(newVal.admin) && newVal.admin.currentShopId > 0){
-          if(!this.$util.isEmpty(newVal.onlyCg)){
-            this.handleLoginStyle(newVal.onlyCg)
-          }
-      }
-		}
-	},
-  onPullDownRefresh () {
-    this.init();
-    uni.stopPullDownRefresh();
-  },
-  onLoad(){
-		getWeixinId().then(res => {
-			this.getappIdList = res.data
-		})
-		this.updateCurrentDate()
-  },
-  onShow () {
-      this.unReadMsgNum = 0; // 重置未读消息数
-    
-      this.init();
-
-      // 判断是否登录
-      if(!this.$util.isEmpty(this.loginInfo.admin) && this.loginInfo.admin.currentShopId > 0){
-          if(!this.$util.isEmpty(this.loginInfo.onlyCg)){
-            this.handleLoginStyle(this.loginInfo.onlyCg)
-          }
-
-          // this.getUnReadMsgCount()
-          this.showShopName()
-      }
-  },
-	onShareAppMessage(res) {
-		return {
-			title: "花掌柜,花店管家婆",
-			desc: "",
-			imageUrl: "",
-			path: "admin/home/workbench",
-		}
-	},
-  methods: {
-    onChooseAvatar(e){
-      if(this.loginInfo && this.loginInfo.staff && this.loginInfo.staff.founder != 2){
-        this.$msg('门店LOGO请老板修改')
-        return
-      }
-      if(e && e.detail && e.detail.avatarUrl){
-        let avatarUrl = e.detail.avatarUrl
-        this.updateShopAvatar(avatarUrl)
-      }else{
-        this.$msg('获取头像失败')
-      }
-    },
-    updateShopAvatar(avatarUrl){
-      let token = uni.getStorageSync('token') || ''
-      let url = APIHOST + '/upload/save-file'
-      uni.uploadFile({
-        url: url,
-        filePath: avatarUrl,
-        name: 'file',
-        header: { token: token },
-        formData: {},
-        success: (res) => {
-          try{
-            const ret = JSON.parse(res.data)
-            if(ret.code == 1){
-              this.shopInfo.avatar = ret.data.shortUrl
-              this.$msg('头像已更新')
-              uni.setStorageSync('shopAvatar', this.shopInfo.avatar)
-
-              //请后端,上传新的头像地址,同步更新xhGhsCustom里面的头像地址
-              uploadShopAvatar({ id: this.shopInfo.id, avatar: ret.data.shortUrl }).then(res => {
-                if(res.code == 1){
-                  // this.$msg('头像上传成功')
-                }else{
-                  // this.$msg(res.msg || '上传失败')
-                  console.log(res.msg || '上传失败')
-                }
-              })
-            }else{
-              this.$msg(ret.msg || '上传失败')
-            }
-          }catch(err){
-            this.$msg('服务异常')
-          }
+    </uni-popup>
+  
+    <custom-tab-bar v-if="loginStyle == 2" :current="0" />
+  </view>
+  </template>
+  <script>
+  import { mapGetters } from "vuex";
+  import { getWeixinId } from "@/api/invite";
+  import { getShortUrl } from "@/api/main";
+  import { getStat } from '@/api/console' //getStrokeCount 已弃用
+  import { consoleIndex } from "@/api/workbench";
+  import autoUpdateMixins from "@/mixins/autoUpdate";
+  import { ghsList } from "@/api/purchase";
+  import { changeDelStatus,hasMoreGhs } from "@/api/ghs";
+  import {currentShop, uploadShopAvatar} from "@/api/shop";
+  import { clearLogin,hasNotice } from "@/api/admin";
+  import { unReadMsgCount } from "@/api/chat";
+  import { APIHOST,CURRENT_ENV } from "@/config";
+  export default {
+    name: "workbench",
+    mixins: [autoUpdateMixins],
+    data () {
+      return {
+        overview:[],
+        ad:[],
+        showAd:1,
+        constant: this.$constant,
+        getappIdList: {},
+        data: {
+          admin: {},
+          asset: {},
+          notice: {},
+          todayData: { income:0.00, order:0, custom:0, expend:0.00, visit:0 },
+          isMini:0
         },
-        fail: () => {
-          this.$msg('上传失败')
-        }
-      })
+        yesterdayIncome: 0,
+        supplierList: [],
+        //登录状态 0未登录 1登录仅用到了采购 2登录用到完整功能
+        loginStyle :0,
+        backAction:'',
+        lookMoney:1,
+        currentGhs:{},
+        displaySupplierList: [],// 用于显示在弹框中的供货商列表
+        shopInfo:[],
+        urlNo:1,
+        shortUrlList:[],
+        unReadMsgNum:0, //未读消息数
+        currentDate: '', // 当前日期信息 如:12月26号 周五
+      };
     },
-    shopAvatar(){
-      const avatar = (this.shopInfo && this.shopInfo.avatar) ? this.shopInfo.avatar : '/default_avatar.png?x-oss-process=image/resize,m_fill,h_130,w_130'
-      if(!avatar){
-        return ''
-      }
-      if(/^https?:\/\//i.test(avatar)){
-        return avatar
-      }
-      return this.$constant.imgUrl + (avatar.indexOf('/') === 0 ? avatar : ('/' + avatar))
+    computed: {
+      ...mapGetters({ loginInfo: "getLoginInfo",dictInfo:"getDictionariesInfo",myShopInfo:"getMyShopInfo" })
     },
-		buyItem() {
-			let that = this
-			// #ifdef MP-WEIXIN
-			uni.navigateToMiniProgram({
-				//姜枫-2021.04.13
-				appId: that.getappIdList.mall.miniAppId,
-				path: 'pages/home/recent',
-				//develop 开发版 trial 体验版 release 正式版
-				envVersion: process.env.NODE_ENV === 'development' ? 'develop' : 'release',
-				extraData: {},
-				success (res) {
-				}
-			})
-			// #endif
-			// #ifdef APP-PLUS
-				that.$msg("请用微信打开")
-			// #endif
-		},
-    init () {
-      this.getGHSList()
-
-      // #ifdef MP-WEIXIN
-      this.isMini = 1
-      // #endif
-      
-      consoleIndex({isMini:this.isMini}).then(res => {
-        this.data = res.data
-        this.lookMoney = res.data.lookMoney
-      })
-
-      getStat().then(res=>{
-        if(res.code == 1){
-          this.overview = res.data.overview
-        }
-      })
-      this.showShopName()
-      this.getUnReadMsgCount()
-    },
-    handleLoginStyle(onlyCg){
-      if(Number(onlyCg) == 1){
-        this.loginStyle  = 1
-        uni.hideTabBar()
-        this.toRemindCustom()
-      }else{
-        this.loginStyle  = 2
-        uni.showTabBar()
-        this.getMallData()
-      }
-    },
-    getMallData(){
-      getShortUrl().then(res=>{
-        if(res.code == 1){
-          this.shortUrlList = res.data?res.data:[]
+    watch: {
+      //只需要采购花材的花店不显示底部菜单
+      loginInfo(newVal) {
+        if(!this.$util.isEmpty(newVal.admin) && newVal.admin.currentShopId > 0){
+            if(!this.$util.isEmpty(newVal.onlyCg)){
+              this.handleLoginStyle(newVal.onlyCg)
+            }
         }
-      })
-    },
-    goItemKjKd(){
-      if(this.myShopInfo && Number(this.myShopInfo.defaultCustomId)>0){
-        this.$util.pageTo({url:'/admin/billing/index2?customId='+this.myShopInfo.defaultCustomId})
-      }else{
-        this.$msg('请设置快捷开单的对应客户')
-      }
-    },
-    goItemKd(){
-      this.$util.pageTo({url:'/admin/custom/selectCustom'})
-    },
-    goHsKjKd(){
-      if(this.myShopInfo && Number(this.myShopInfo.defaultCustomId)>0){
-        this.$util.pageTo({url:'/admin/billing/hs?customId='+this.myShopInfo.defaultCustomId})
-      }else{
-        this.$msg('请设置快捷开单的对应客户')
       }
     },
-    goHsKd(){
-      this.$util.pageTo({url:'/admin/custom/selectCustom?style=3'})
-    },
-    setRecharge(){
-      this.$util.pageTo({url:'/admin/recharge/discount'})
-    },
-    setMemberLevel(){
-      this.$util.pageTo({url:'/admin/member/level'})
-    },
-		closeToShow(){
-			this.$refs.toShowMore.close()
-		},
-    // 显示供货商提示弹框
-    showSupplierNotice() {
-      // 设置要显示的供货商列表,最多显示5个
-      this.displaySupplierList = this.supplierList.filter(item => item.name).slice(0, 5)
-      this.$refs.supplierNoticePopup.open('center')
-    },
-    // 关闭供货商提示弹框
-    closeSupplierNotice() {
-      this.$refs.supplierNoticePopup.close()
-      // 调用已有的接口标记已通知
-      hasNotice().then(res => { })
+    onPullDownRefresh () {
+      this.init();
+      uni.stopPullDownRefresh();
     },
-    // 下次提醒
-    remindLater() {
-      this.$refs.supplierNoticePopup.close()
-      // 不调用hasNotice接口,保持提醒状态
+    onLoad(){
+      getWeixinId().then(res => {
+        this.getappIdList = res.data
+      })
+      this.updateCurrentDate()
     },
-    getMore(info){
-			this.currentGhs = info
-			this.$refs.toShowMore.open('top')
+    onShow () {
+        this.unReadMsgNum = 0; // 重置未读消息数
+      
+        this.init();
+  
+        // 判断是否登录
+        if(!this.$util.isEmpty(this.loginInfo.admin) && this.loginInfo.admin.currentShopId > 0){
+            if(!this.$util.isEmpty(this.loginInfo.onlyCg)){
+              this.handleLoginStyle(this.loginInfo.onlyCg)
+            }
+  
+            // this.getUnReadMsgCount()
+            this.showShopName()
+        }
     },
-    callUp (ghs) {
-      let mobileList = []
-      if (!this.$util.isEmpty(ghs.telephone)){
-        mobileList.push(ghs.telephone)
-      }
-      if (!this.$util.isEmpty(ghs.telephone2)){
-        mobileList.push(ghs.telephone2)
+    onShareAppMessage(res) {
+      return {
+        title: "花掌柜,花店管家婆",
+        desc: "",
+        imageUrl: "",
+        path: "admin/home/workbench",
       }
-      if(this.$util.isEmpty(mobileList)){
-        this.$msg('没有联系电话')
-        return false
-      }
-			uni.showActionSheet({
-				itemList: mobileList,
-				success: function (respond) {
-					let currentIndex = respond.tapIndex
-					let mobile = mobileList[currentIndex]
-          uni.makePhoneCall({ phoneNumber: mobile })
-				}
-			})
     },
-    toPhone(){
-			this.$util.pageTo({url: '/pagesPurchase/contact'})
-		},
-		showShopName(){
-			currentShop().then(res => {
-				if(res.code == 1){
-					let sjName = res.data.merchantName ? res.data.merchantName : ''
-					let shopName = res.data.shopName ? res.data.shopName : ''
-					let title = shopName == '首店' ? sjName : sjName+' '+shopName
-					uni.setNavigationBarTitle({ title: title })
-          this.shopInfo = res.data?res.data:[]
-          if(this.shopInfo.avatar) {
-            uni.setStorageSync('shopAvatar', this.shopInfo.avatar);
-          }else{
-            uni.setStorageSync('shopAvatar', '');
+    methods: {
+      onChooseAvatar(e){
+        if(this.loginInfo && this.loginInfo.staff && this.loginInfo.staff.founder != 2){
+          this.$msg('门店LOGO请老板修改')
+          return
+        }
+        if(e && e.detail && e.detail.avatarUrl){
+          let avatarUrl = e.detail.avatarUrl
+          this.updateShopAvatar(avatarUrl)
+        }else{
+          this.$msg('获取头像失败')
+        }
+      },
+      updateShopAvatar(avatarUrl){
+        let token = uni.getStorageSync('token') || ''
+        let url = APIHOST + '/upload/save-file'
+        uni.uploadFile({
+          url: url,
+          filePath: avatarUrl,
+          name: 'file',
+          header: { token: token },
+          formData: {},
+          success: (res) => {
+            try{
+              const ret = JSON.parse(res.data)
+              if(ret.code == 1){
+                this.shopInfo.avatar = ret.data.shortUrl
+                this.$msg('头像已更新')
+                uni.setStorageSync('shopAvatar', this.shopInfo.avatar)
+  
+                //请后端,上传新的头像地址,同步更新xhGhsCustom里面的头像地址
+                uploadShopAvatar({ id: this.shopInfo.id, avatar: ret.data.shortUrl }).then(res => {
+                  if(res.code == 1){
+                    // this.$msg('头像上传成功')
+                  }else{
+                    // this.$msg(res.msg || '上传失败')
+                    console.log(res.msg || '上传失败')
+                  }
+                })
+              }else{
+                this.$msg(ret.msg || '上传失败')
+              }
+            }catch(err){
+              this.$msg('服务异常')
+            }
+          },
+          fail: () => {
+            this.$msg('上传失败')
+          }
+        })
+      },
+      shopAvatar(){
+        const avatar = (this.shopInfo && this.shopInfo.avatar) ? this.shopInfo.avatar : '/default_avatar.png?x-oss-process=image/resize,m_fill,h_130,w_130'
+        if(!avatar){
+          return ''
+        }
+        if(/^https?:\/\//i.test(avatar)){
+          return avatar
+        }
+        return this.$constant.imgUrl + (avatar.indexOf('/') === 0 ? avatar : ('/' + avatar))
+      },
+      buyItem() {
+        let that = this
+        // #ifdef MP-WEIXIN
+        uni.navigateToMiniProgram({
+          //姜枫-2021.04.13
+          appId: that.getappIdList.mall.miniAppId,
+          path: 'pages/home/recent',
+          //develop 开发版 trial 体验版 release 正式版
+          envVersion: process.env.NODE_ENV === 'development' ? 'develop' : 'release',
+          extraData: {},
+          success (res) {
           }
-				}
-			})
-		},
-    goMore(){
-      let that = this
-      let shopkeeper = this.loginInfo.staff && this.loginInfo.staff.founder == 2 //判断店主(老板)
-      let items = shopkeeper ? ['已删除商家', '改进建议', '开关商城', '想要这样的商城', '修改密码', '退出登录'] : ['已删除商家', '我已离职', '开关商城', '想要这样的商城', '修改密码', '退出登录'];
-      uni.showActionSheet({
-        itemList: items,
-        success: function (res) {
-          if(res.tapIndex == 0){
-            that.$util.pageTo({url: '/pagesPurchase/pb'})
+        })
+        // #endif
+        // #ifdef APP-PLUS
+          that.$msg("请用微信打开")
+        // #endif
+      },
+      init () {
+        this.getGHSList()
+  
+        // #ifdef MP-WEIXIN
+        this.isMini = 1
+        // #endif
+        
+        consoleIndex({isMini:this.isMini}).then(res => {
+          this.data = res.data
+          this.lookMoney = res.data.lookMoney
+        })
+  
+        getStat().then(res=>{
+          if(res.code == 1){
+            this.overview = res.data.overview
+          }
+        })
+        this.showShopName()
+        this.getUnReadMsgCount()
+      },
+      handleLoginStyle(onlyCg){
+        if(Number(onlyCg) == 1){
+          this.loginStyle  = 1
+          uni.hideTabBar({fail:()=>{}})
+          this.toRemindCustom()
+        }else{
+          this.loginStyle  = 2
+          uni.hideTabBar({fail:()=>{}})
+          this.getMallData()
+        }
+      },
+      getMallData(){
+        getShortUrl().then(res=>{
+          if(res.code == 1){
+            this.shortUrlList = res.data?res.data:[]
           }
-          if(res.tapIndex == 1){
-            if(shopkeeper){
-              // 店主显示改进建议
-              that.suggest()
+        })
+      },
+      goItemKjKd(){
+        if(this.myShopInfo && Number(this.myShopInfo.defaultCustomId)>0){
+          this.$util.pageTo({url:'/admin/billing/index2?customId='+this.myShopInfo.defaultCustomId})
+        }else{
+          this.$msg('请设置快捷开单的对应客户')
+        }
+      },
+      goItemKd(){
+        this.$util.pageTo({url:'/admin/custom/selectCustom'})
+      },
+      goHsKjKd(){
+        if(this.myShopInfo && Number(this.myShopInfo.defaultCustomId)>0){
+          this.$util.pageTo({url:'/admin/billing/hs?customId='+this.myShopInfo.defaultCustomId})
+        }else{
+          this.$msg('请设置快捷开单的对应客户')
+        }
+      },
+      goHsKd(){
+        this.$util.pageTo({url:'/admin/custom/selectCustom?style=3'})
+      },
+      setRecharge(){
+        this.$util.pageTo({url:'/admin/recharge/discount'})
+      },
+      setMemberLevel(){
+        this.$util.pageTo({url:'/admin/member/level'})
+      },
+      closeToShow(){
+        this.$refs.toShowMore.close()
+      },
+      // 显示供货商提示弹框
+      showSupplierNotice() {
+        // 设置要显示的供货商列表,最多显示5个
+        this.displaySupplierList = this.supplierList.filter(item => item.name).slice(0, 5)
+        this.$refs.supplierNoticePopup.open('center')
+      },
+      // 关闭供货商提示弹框
+      closeSupplierNotice() {
+        this.$refs.supplierNoticePopup.close()
+        // 调用已有的接口标记已通知
+        hasNotice().then(res => { })
+      },
+      // 下次提醒
+      remindLater() {
+        this.$refs.supplierNoticePopup.close()
+        // 不调用hasNotice接口,保持提醒状态
+      },
+      getMore(info){
+        this.currentGhs = info
+        this.$refs.toShowMore.open('top')
+      },
+      callUp (ghs) {
+        let mobileList = []
+        if (!this.$util.isEmpty(ghs.telephone)){
+          mobileList.push(ghs.telephone)
+        }
+        if (!this.$util.isEmpty(ghs.telephone2)){
+          mobileList.push(ghs.telephone2)
+        }
+        if(this.$util.isEmpty(mobileList)){
+          this.$msg('没有联系电话')
+          return false
+        }
+        uni.showActionSheet({
+          itemList: mobileList,
+          success: function (respond) {
+            let currentIndex = respond.tapIndex
+            let mobile = mobileList[currentIndex]
+            uni.makePhoneCall({ phoneNumber: mobile })
+          }
+        })
+      },
+      toPhone(){
+        this.$util.pageTo({url: '/pagesPurchase/contact'})
+      },
+      showShopName(){
+        currentShop().then(res => {
+          if(res.code == 1){
+            let sjName = res.data.merchantName ? res.data.merchantName : ''
+            let shopName = res.data.shopName ? res.data.shopName : ''
+            let title = shopName == '首店' ? sjName : sjName+' '+shopName
+            uni.setNavigationBarTitle({ title: title })
+            this.shopInfo = res.data?res.data:[]
+            if(this.shopInfo.avatar) {
+              uni.setStorageSync('shopAvatar', this.shopInfo.avatar);
             }else{
-              // 员工显示离职
-              that.$util.pageTo({url: '/admin/staff/dimission'})
+              uni.setStorageSync('shopAvatar', '');
             }
           }
-          if(res.tapIndex == 2){
-            that.$util.pageTo({url:'/pagesPurchase/open'})
+        })
+      },
+      goMore(){
+        let that = this
+        let shopkeeper = this.loginInfo.staff && this.loginInfo.staff.founder == 2 //判断店主(老板)
+        let items = shopkeeper ? ['已删除商家', '改进建议', '开关商城', '想要这样的商城', '修改密码', '退出登录'] : ['已删除商家', '我已离职', '开关商城', '想要这样的商城', '修改密码', '退出登录'];
+        uni.showActionSheet({
+          itemList: items,
+          success: function (res) {
+            if(res.tapIndex == 0){
+              that.$util.pageTo({url: '/pagesPurchase/pb'})
+            }
+            if(res.tapIndex == 1){
+              if(shopkeeper){
+                // 店主显示改进建议
+                that.suggest()
+              }else{
+                // 员工显示离职
+                that.$util.pageTo({url: '/admin/staff/dimission'})
+              }
+            }
+            if(res.tapIndex == 2){
+              that.$util.pageTo({url:'/pagesPurchase/open'})
+            }
+            if(res.tapIndex == 3){
+              that.openPfShop()
+            }
+            if(res.tapIndex == 4){
+              that.$util.pageTo({url:'/admin/shop/password'})
+            }
+            if(res.tapIndex == 5){
+              that.$util.confirmModal({content:'确认退出?'},() => {
+                // #ifdef APP-PLUS
+                uni.clearStorage()
+                that.$store.commit("setLoginInfo", {})
+                plus.runtime.restart()
+                // #endif
+                // #ifdef MP-WEIXIN
+                clearLogin().then(res=>{
+                  if(res.code == 1){
+                    uni.clearStorage()
+                    that.$store.commit("setLoginInfo", {})
+                    uni.reLaunch({url:'/admin/home/workbench'})
+                  }
+                })
+                // #endif
+              })
+            }
           }
-          if(res.tapIndex == 3){
-            that.openPfShop()
+        });
+      },
+      openPfShop(){
+        this.pageTo({url: '/pagesPurchase/contact'})
+      },
+      suggest(){
+        this.pageTo({url: '/pagesPurchase/contact'})
+      },
+      bookItem(item){
+        const { id } = item
+        this.pageTo({url: '/pagesPurchase/bookProduct?id='+id})
+      },
+      goBalanceChange(info){
+        this.closeToShow()
+        this.pageTo({url: '/admin/ghs/balanceChange?ghsId='+info.id})
+      },
+      rechargeChange(){
+        this.closeToShow()
+        this.pageTo({url: '/admin/ghs/rechargeChange?ghsId='+this.currentGhs.id})
+      },
+      balanceChange(){
+        this.closeToShow()
+        this.pageTo({url: '/admin/ghs/balanceChange?ghsId='+this.currentGhs.id})
+      },
+      bpSj(){
+        let that = this
+        that.$util.confirmModal({content:'确认删除?删除后你不能再跟此批发店买花!!!!',okText:'确认'},() => {
+          that.confirmPb(that.currentGhs)
+        })
+      },
+      recharge(currentGhs){
+        this.pageTo({url: '/admin/ghs/pay?id='+currentGhs.id+'&salt='+currentGhs.salt})
+      },
+      confirmPb(ghs){
+        let that = this
+        changeDelStatus({delStatus:1,ghsId:ghs.id}).then(res=>{
+          if(res.code == 1){
+            that.closeToShow()
+            that.getGHSList()
           }
-          if(res.tapIndex == 4){
-            that.$util.pageTo({url:'/admin/shop/password'})
+        })
+      },
+      fillCg(item){
+        this.pageTo({url:'/pagesPurchase/addCg?ghsId='+item.id+'&ghsName='+item.name})
+      },
+      goKmCg(currentGhs){
+        let self = this
+        // #ifdef MP-WEIXIN
+        uni.navigateToMiniProgram({
+          appId: currentGhs.kmCgAppId,
+          path: currentGhs.kmCgUrl,
+          //develop 开发版 trial 体验版 release 正式版
+          envVersion: process.env.NODE_ENV === 'development' ? 'develop' : 'release',
+          extraData: {},
+          success (res) {}
+        })
+        // #endif
+        // #ifdef APP-PLUS
+        self.$msg('开发中')
+        // #endif
+      },
+      enterShop(item) {
+        let that = this
+        if(item.isOpen == 0){
+          this.$msg('已休店,请选择其它门店')
+          return false
+        }
+        that.pageTo({url: '/pagesPurchase/ghsProduct?id='+item.id})
+      },
+      enterShop2(item) {
+        let that = this
+        if(item.isOpen == 0){
+          this.$msg('已休店,请选择其它门店')
+          return false
+        }
+        that.pageTo({url: '/pagesPurchase/ghsProduct2?id='+item.id})
+      },
+      whyHave(){
+        this.$util.confirmModal({content:'付款金额不足消欠款单时,存为余额下次使用'},() => {})
+      },
+      settleAccounts (item) {
+        this.pageTo({ url: '/pagesPurchase/gathering?id='+item.id})
+      },
+      gotoDetails (val) {
+        this.pageTo({ url: '/pagesPurchase/purDetails?status=' + val.status + '&id=' + val.id, type:2 })
+      },
+      getGHSList () {
+        return ghsList().then(res => {
+          this.supplierList = res.data.list
+          this.ad = res.data.ad ? res.data.ad : []
+          this.showAd = res.data.showAd ? res.data.showAd : 0
+        })
+      },
+      goPage (item) {
+        if(this.getLoginInfo.pfShopId && Number(this.getLoginInfo.pfShopId)>0){
+          if(item.pf == 0){
+            this.$msg('开发中')
+            return false
           }
-          if(res.tapIndex == 5){
-            that.$util.confirmModal({content:'确认退出?'},() => {
-              // #ifdef APP-PLUS
-              uni.clearStorage()
-              that.$store.commit("setLoginInfo", {})
-              plus.runtime.restart()
-              // #endif
-              // #ifdef MP-WEIXIN
-              clearLogin().then(res=>{
-                if(res.code == 1){
-                  uni.clearStorage()
-                  that.$store.commit("setLoginInfo", {})
-                  uni.reLaunch({url:'/admin/home/workbench'})
-                }
-              })
-              // #endif
+        }
+        this.$util.pageTo(item)
+      },
+      toRemindCustom(){
+          if(this.loginStyle==1){
+            hasMoreGhs().then(ret=>{
+              if(ret.data.needNotice == 1){
+                this.showSupplierNotice()
+              }
             })
           }
+      },
+      noticeFn (item) {
+        this.$util.pageTo({ url: item.page })
+      },
+      goToWastage () {
+        this.$util.pageTo({url:'/admin/breakage/list'})
+      },
+      goToKindStat(){
+        this.$util.pageTo({url:'/admin/stat/kind'})
+      },
+      goToProfit () {
+        this.$util.pageTo({url:'/admin/stat/profit'})
+      },
+      // 显示商城选项弹框
+      showMallOptions(no) {
+        this.urlNo = no
+        this.$refs.mallOptionsPopup.open('center')
+      },
+      // 关闭商城选项弹框
+      closeMallOptions() {
+        this.$refs.mallOptionsPopup.close()
+      },
+      // 直接打开商城
+      openMallDirect() {
+        this.closeMallOptions()
+        let url = ''
+        //花束商城
+        if(this.urlNo == 1){
+          url = 'pages/home/category'
         }
-      });
-    },
-    openPfShop(){
-      this.pageTo({url: '/pagesPurchase/contact'})
-    },
-    suggest(){
-      this.pageTo({url: '/pagesPurchase/contact'})
-    },
-    bookItem(item){
-      const { id } = item
-      this.pageTo({url: '/pagesPurchase/bookProduct?id='+id})
-    },
-    goBalanceChange(info){
-      this.closeToShow()
-      this.pageTo({url: '/admin/ghs/balanceChange?ghsId='+info.id})
-    },
-    rechargeChange(){
-      this.closeToShow()
-      this.pageTo({url: '/admin/ghs/rechargeChange?ghsId='+this.currentGhs.id})
-    },
-    balanceChange(){
-      this.closeToShow()
-      this.pageTo({url: '/admin/ghs/balanceChange?ghsId='+this.currentGhs.id})
-    },
-    bpSj(){
-      let that = this
-      that.$util.confirmModal({content:'确认删除?删除后你不能再跟此批发店买花!!!!',okText:'确认'},() => {
-        that.confirmPb(that.currentGhs)
-			})
-    },
-    recharge(currentGhs){
-      this.pageTo({url: '/admin/ghs/pay?id='+currentGhs.id+'&salt='+currentGhs.salt})
-    },
-    confirmPb(ghs){
-      let that = this
-      changeDelStatus({delStatus:1,ghsId:ghs.id}).then(res=>{
-        if(res.code == 1){
-          that.closeToShow()
-          that.getGHSList()
+        //相册
+        if(this.urlNo == 2){
+          url = 'pages/home/mall'
         }
-      })
-    },
-    fillCg(item){
-      this.pageTo({url:'/pagesPurchase/addCg?ghsId='+item.id+'&ghsName='+item.name})
-    },
-    goKmCg(currentGhs){
-      let self = this
-      // #ifdef MP-WEIXIN
-      uni.navigateToMiniProgram({
-        appId: currentGhs.kmCgAppId,
-        path: currentGhs.kmCgUrl,
-        //develop 开发版 trial 体验版 release 正式版
-        envVersion: process.env.NODE_ENV === 'development' ? 'develop' : 'release',
-        extraData: {},
-        success (res) {}
-      })
-      // #endif
-      // #ifdef APP-PLUS
-      self.$msg('开发中')
-      // #endif
-    },
-    enterShop(item) {
-      let that = this
-      if(item.isOpen == 0){
-        this.$msg('已休店,请选择其它门店')
-        return false
-      }
-      that.pageTo({url: '/pagesPurchase/ghsProduct?id='+item.id})
-    },
-    enterShop2(item) {
-      let that = this
-      if(item.isOpen == 0){
-        this.$msg('已休店,请选择其它门店')
-        return false
-      }
-      that.pageTo({url: '/pagesPurchase/ghsProduct2?id='+item.id})
-    },
-    whyHave(){
-      this.$util.confirmModal({content:'付款金额不足消欠款单时,存为余额下次使用'},() => {})
-    },
-    settleAccounts (item) {
-      this.pageTo({ url: '/pagesPurchase/gathering?id='+item.id})
-    },
-    gotoDetails (val) {
-      this.pageTo({ url: '/pagesPurchase/purDetails?status=' + val.status + '&id=' + val.id, type:2 })
-    },
-    getGHSList () {
-      return ghsList().then(res => {
-        this.supplierList = res.data.list
-        this.ad = res.data.ad ? res.data.ad : []
-        this.showAd = res.data.showAd ? res.data.showAd : 0
-      })
-    },
-    goPage (item) {
-      if(this.getLoginInfo.pfShopId && Number(this.getLoginInfo.pfShopId)>0){
-        if(item.pf == 0){
-          this.$msg('开发中')
-          return false
+        //绿植花材商城
+        if(this.urlNo == 3){
+          url = 'pages/item/item'
         }
-      }
-      this.$util.pageTo(item)
-    },
-    toRemindCustom(){
-        if(this.loginStyle==1){
-          hasMoreGhs().then(ret=>{
-            if(ret.data.needNotice == 1){
-              this.showSupplierNotice()
-            }
-          })
+        this.goToMallPt(url)
+      },
+      // 复制商城链接
+      copyMallLink() {
+        this.closeMallOptions()
+        let currentShortUrl = ''
+        let text = ""
+        //花束商城
+        if(this.urlNo == 1){
+          currentShortUrl = this.shortUrlList['goodsUrl']
+          text = "点击下面链接,打开商城\n\n"+currentShortUrl+"\n\n链接是我们小程序,放心点击"
         }
-    },
-    noticeFn (item) {
-      this.$util.pageTo({ url: item.page })
-    },
-    goToWastage () {
-      this.$util.pageTo({url:'/admin/breakage/list'})
-    },
-    goToKindStat(){
-      this.$util.pageTo({url:'/admin/stat/kind'})
-    },
-    goToProfit () {
-      this.$util.pageTo({url:'/admin/stat/profit'})
-    },
-    // 显示商城选项弹框
-    showMallOptions(no) {
-      this.urlNo = no
-      this.$refs.mallOptionsPopup.open('center')
-    },
-    // 关闭商城选项弹框
-    closeMallOptions() {
-      this.$refs.mallOptionsPopup.close()
-    },
-    // 直接打开商城
-    openMallDirect() {
-      this.closeMallOptions()
-      let url = ''
-      //花束商城
-      if(this.urlNo == 1){
-        url = 'pages/home/category'
-      }
-      //相册
-      if(this.urlNo == 2){
-        url = 'pages/home/mall'
-      }
-      //绿植花材商城
-      if(this.urlNo == 3){
-        url = 'pages/item/item'
-      }
-      this.goToMallPt(url)
-    },
-    // 复制商城链接
-    copyMallLink() {
-      this.closeMallOptions()
-      let currentShortUrl = ''
-      let text = ""
-      //花束商城
-      if(this.urlNo == 1){
-        currentShortUrl = this.shortUrlList['goodsUrl']
-        text = "点击下面链接,打开商城\n\n"+currentShortUrl+"\n\n链接是我们小程序,放心点击"
-      }
-      //相册
-      if(this.urlNo == 2){
-        currentShortUrl = this.shortUrlList['imgUrl']
-        text = "点击下面链接,打开相册\n\n"+currentShortUrl+"\n\n链接是我们小程序,放心点击"
-      }
-      //绿植花材商城
-      if(this.urlNo == 3){
-        currentShortUrl = this.shortUrlList['itemUrl']
-        text = "点击下面链接,打开商城\n\n"+currentShortUrl+"\n\n链接是我们小程序,放心点击"
-      }
-      uni.setClipboardData({
-        data: text,
-        success: () => {
-          this.$msg('已复制')
-        },
-        fail: () => {
-          this.$msg('复制失败')
+        //相册
+        if(this.urlNo == 2){
+          currentShortUrl = this.shortUrlList['imgUrl']
+          text = "点击下面链接,打开相册\n\n"+currentShortUrl+"\n\n链接是我们小程序,放心点击"
         }
-      })
-    },
-    goToMallPt (url) {
-      // #ifdef MP-WEIXIN
-      let self = this
-      uni.navigateToMiniProgram({
-        appId: this.getappIdList.mall.miniAppId,
-        path: url + '?account=' + self.loginInfo.shopId,
-        //develop 开发版 trial 体验版 release 正式版
-        envVersion: process.env.NODE_ENV === 'development' ? 'develop' : 'release',
-        extraData: {
-          'hdShopAdminId': self.loginInfo.shopAdminId
-        },
-        success (res) {}
-      })
-      // #endif
-      // #ifdef APP-PLUS
-      let that = this
-
-      if(plus.runtime.isApplicationExist({pname:'com.tencent.mm',action:'weixin://'})){
-        plus.share.getServices(function(s){
-          var sweixin
-          for (var i = 0; i < s.length; i++) {
-            var t = s[i];
-            if (t.id == 'weixin') {
-                sweixin = t;
-            }
+        //绿植花材商城
+        if(this.urlNo == 3){
+          currentShortUrl = this.shortUrlList['itemUrl']
+          text = "点击下面链接,打开商城\n\n"+currentShortUrl+"\n\n链接是我们小程序,放心点击"
+        }
+        uni.setClipboardData({
+          data: text,
+          success: () => {
+            this.$msg('已复制')
+          },
+          fail: () => {
+            this.$msg('复制失败')
           }
-          if (sweixin && sweixin.nativeClient) {
-            let miniOriginalId = that.dictInfo.miniOriginalId && that.dictInfo.miniOriginalId.current && that.dictInfo.miniOriginalId.current.mall ? that.dictInfo.miniOriginalId.current.mall : ''
-            console.log(miniOriginalId)
-            sweixin.launchMiniProgram({
-              id: miniOriginalId,
-              path: '/'+url+'?account='+that.loginInfo.shopId,
-              type: 0
-            });
-          } else {
-            that.$msg("没有找到微信服务")
-            //that.$msg("获取微信失败:" + e.message)
-            console.log(JSON.stringify(e));
+        })
+      },
+      goToMallPt (url) {
+        // #ifdef MP-WEIXIN
+        let self = this
+        uni.navigateToMiniProgram({
+          appId: this.getappIdList.mall.miniAppId,
+          path: url + '?account=' + self.loginInfo.shopId,
+          //develop 开发版 trial 体验版 release 正式版
+          envVersion: process.env.NODE_ENV === 'development' ? 'develop' : 'release',
+          extraData: {
+            'hdShopAdminId': self.loginInfo.shopAdminId
+          },
+          success (res) {}
+        })
+        // #endif
+        // #ifdef APP-PLUS
+        let that = this
+  
+        if(plus.runtime.isApplicationExist({pname:'com.tencent.mm',action:'weixin://'})){
+          plus.share.getServices(function(s){
+            var sweixin
+            for (var i = 0; i < s.length; i++) {
+              var t = s[i];
+              if (t.id == 'weixin') {
+                  sweixin = t;
+              }
+            }
+            if (sweixin && sweixin.nativeClient) {
+              let miniOriginalId = that.dictInfo.miniOriginalId && that.dictInfo.miniOriginalId.current && that.dictInfo.miniOriginalId.current.mall ? that.dictInfo.miniOriginalId.current.mall : ''
+              console.log(miniOriginalId)
+              sweixin.launchMiniProgram({
+                id: miniOriginalId,
+                path: '/'+url+'?account='+that.loginInfo.shopId,
+                type: 0
+              });
+            } else {
+              that.$msg("没有找到微信服务")
+              //that.$msg("获取微信失败:" + e.message)
+              console.log(JSON.stringify(e));
+            }
+          }, function(e){
+              that.$msg("没有找到微信服务哦")
+              //that.$msg("获取微信失败:" + e.message)
+              console.log(JSON.stringify(e));
+          });
+        } else {
+          this.$msg("即将跳转小程序,请安装微信")
+          return false
+        }
+        // #endif
+      },
+      getUnReadMsgCount(){
+        unReadMsgCount().then(res=>{
+          if(res.code == 1){
+            this.unReadMsgNum = res.data.msg_count
           }
-        }, function(e){
-            that.$msg("没有找到微信服务哦")
-            //that.$msg("获取微信失败:" + e.message)
-            console.log(JSON.stringify(e));
-        });
-      } else {
-				this.$msg("即将跳转小程序,请安装微信")
-				return false
+        })
+      },
+      updateCurrentDate(){
+        const now = new Date()
+        const month = now.getMonth() + 1
+        const date = now.getDate()
+        const weekDays = ['星期天', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
+        const week = weekDays[now.getDay()]
+        this.currentDate = `${month}-${date} ${week}`
       }
-			// #endif
-    },
-    getUnReadMsgCount(){
-      unReadMsgCount().then(res=>{
-        if(res.code == 1){
-          this.unReadMsgNum = res.data.msg_count
-        }
-      })
-    },
-    updateCurrentDate(){
-      const now = new Date()
-      const month = now.getMonth() + 1
-      const date = now.getDate()
-      const weekDays = ['星期天', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
-      const week = weekDays[now.getDay()]
-      this.currentDate = `${month}-${date} ${week}`
     }
+  };
+  </script>
+  <style lang="scss" scoped>
+  .app-content {
+    padding-bottom: 10upx;
+  }
+  .module-com {
+    margin-bottom: 37upx;
+    background-color: #fff;
   }
-};
-</script>
-<style lang="scss" scoped>
-.app-content {
-  padding-bottom: 10upx;
-}
-.module-com {
-  margin-bottom: 37upx;
-  background-color: #fff;
-}
-
-// 功能网格部分 - 删除
-
-
-// 今日概况卡片 - 圆形气泡布局
-.today-overview-card {
-  background: linear-gradient(to right, #1ba85e 0%, #22C55E 50%, #16A34A 100%);
-  padding: 0;
-  margin: 0 0 -20upx 0;
-  overflow: visible;
-  border-radius: 0;
-  padding-bottom: 40upx;
   
-  .bubble-header {
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
-    padding: 20upx 24upx 24upx;
-    
-    .bubble-title {
-      font-size: 36upx;
-      font-weight: 700;
-      color: #ffffff;
-      letter-spacing: 0.5upx;
-    }
+  // 功能网格部分 - 删除
+  
+  
+  // 今日概况卡片 - 圆形气泡布局
+  .today-overview-card {
+    background: linear-gradient(to right, #1ba85e 0%, #22C55E 50%, #16A34A 100%);
+    padding: 0;
+    margin: 0 0 -20upx 0;
+    overflow: visible;
+    border-radius: 0;
+    padding-bottom: 40upx;
     
-    .message-btn {
-      position: relative;
-      width: 56upx;
-      height: 56upx;
+    .bubble-header {
       display: flex;
+      justify-content: space-between;
       align-items: center;
-      justify-content: center;
-      background: rgba(255, 255, 255, 0.2);
-      border-radius: 50%;
+      padding: 20upx 24upx 24upx;
       
-      .msg-icon {
-        font-size: 32upx;
-        line-height: 1;
+      .bubble-title {
+        font-size: 36upx;
+        font-weight: 700;
+        color: #ffffff;
+        letter-spacing: 0.5upx;
       }
       
-      .red-mind {
-        position: absolute;
-        top: -8upx;
-        right: -8upx;
-        width: 40upx;
-        height: 40upx;
-        line-height: 36upx;
-        font-size: 24upx;
-        font-weight: 700;
-        text-align: center;
-        color: white;
-        background-color: #ff2842;
-        border: 2upx solid #ffffff;
-        border-radius: 50%;
+      .message-btn {
+        position: relative;
+        width: 56upx;
+        height: 56upx;
         display: flex;
         align-items: center;
         justify-content: center;
+        background: rgba(255, 255, 255, 0.2);
+        border-radius: 50%;
+        
+        .msg-icon {
+          font-size: 32upx;
+          line-height: 1;
+        }
+        
+        .red-mind {
+          position: absolute;
+          top: -8upx;
+          right: -8upx;
+          width: 40upx;
+          height: 40upx;
+          line-height: 36upx;
+          font-size: 24upx;
+          font-weight: 700;
+          text-align: center;
+          color: white;
+          background-color: #ff2842;
+          border: 2upx solid #ffffff;
+          border-radius: 50%;
+          display: flex;
+          align-items: center;
+          justify-content: center;
+        }
       }
     }
-  }
-  
-  .stat-grid {
-    display: flex;
-    justify-content: space-around;
-    align-items: center;
-    padding: 60upx 80upx 60upx;
-    width: 100%;
     
-    .stat-item {
+    .stat-grid {
       display: flex;
-      flex-direction: column;
+      justify-content: space-around;
       align-items: center;
-      justify-content: center;
-      flex: 1;
-      
-      .stat-label {
-        font-size: 26upx;
-        color: rgba(255, 255, 255, 0.8);
-        margin-bottom: 12upx;
-      }
-      
-      .stat-value {
-        font-size: 40upx;
-        font-weight: 700;
-        color: #ffffff;
-        line-height: 1;
-      }
-    }
-  }
-}
-// 消息
-.news-wrap {
-  .news-list {
-    @include disFlex(center, space-between);
-    padding: 30upx 24upx 30upx 30upx;
-    border-bottom: 1px solid $borderColor;
-    font-size: 26upx;
-    color: $fontColor2;
-    &:active {
-      background-color: $backColor;
-    }
-    & > div {
-      @include disFlex(center, flex-start);
-    }
-    .news-left {
-      .iconfont {
-        color: $mainColor;
-        margin-right: 10upx;
-      }
-      .ling {
-        font-size: 28upx;
-      }
-      span{
-        font-size:29upx;
-      }
-    }
-    .news-right {
-      font-size: 26upx;
-      color: $mainColor;
-      transform: scale(0.9);
-      @include disFlex(flex-end, flex-start);
-      .iconfont {
-        font-size: 24upx;
-        margin-left: 10upx;
-        margin-bottom: 6upx;
-      }
-    }
-  }
-}
-// 数据总览模块
-.overview-module {
-  background: #ffffff;
-  border-radius: 16upx;
-  padding: 0;
-  overflow: hidden;
-  
-  .overview-header {
-    background: linear-gradient(135deg, #f8fafb 0%, #ffffff 100%);
-    padding: 30upx 30upx 20upx;
-    border-bottom: 1upx solid #f0f0f0;
-    
-    .overview-title {
-      font-size: 32upx;
-      font-weight: 600;
-      color: #333;
-      margin-bottom: 8upx;
-    }
-  }
-  
-  .overview-grid {
-    display: grid;
-    grid-template-columns: repeat(2, 1fr);
-    padding: 20upx;
-    gap: 16upx;
-    
-    .overview-item {
-      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);
+      padding: 60upx 80upx 60upx;
+      width: 100%;
       
-      &:not(:nth-child(2n)) {
-        &::after {
-          content: '';
-          position: absolute;
-          right: 0;
-          top: 0;
-          transform: none;
-          width: 0;
-          height: 0;
-          background: transparent;
+      .stat-item {
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        justify-content: center;
+        flex: 1;
+        
+        .stat-label {
+          font-size: 26upx;
+          color: rgba(255, 255, 255, 0.8);
+          margin-bottom: 12upx;
         }
-      }
-      
-      &:nth-child(n+3) {
-        &::before {
-          content: '';
-          position: absolute;
-          left: 0;
-          right: 0;
-          top: 0;
-          height: 0;
-          background: transparent;
+        
+        .stat-value {
+          font-size: 40upx;
+          font-weight: 700;
+          color: #ffffff;
+          line-height: 1;
         }
       }
-      
+    }
+  }
+  // 消息
+  .news-wrap {
+    .news-list {
+      @include disFlex(center, space-between);
+      padding: 30upx 24upx 30upx 30upx;
+      border-bottom: 1px solid $borderColor;
+      font-size: 26upx;
+      color: $fontColor2;
       &:active {
-        background: linear-gradient(135deg, #f0f8f5 0%, #e8f5f1 100%);
-        transform: translateY(-4upx);
-        box-shadow: 0 4upx 12upx rgba(0, 0, 0, 0.08);
+        background-color: $backColor;
       }
-      
-      .item-value {
-        font-size: 40upx;
-        font-weight: 700;
-        color: #049E2C;
-        margin-bottom: 12upx;
-        line-height: 1;
+      & > div {
+        @include disFlex(center, flex-start);
       }
-      
-      .item-label {
+      .news-left {
+        .iconfont {
+          color: $mainColor;
+          margin-right: 10upx;
+        }
+        .ling {
+          font-size: 28upx;
+        }
+        span{
+          font-size:29upx;
+        }
+      }
+      .news-right {
         font-size: 26upx;
-        color: #666;
-        line-height: 1;
-        font-weight: 500;
+        color: $mainColor;
+        transform: scale(0.9);
+        @include disFlex(flex-end, flex-start);
+        .iconfont {
+          font-size: 24upx;
+          margin-left: 10upx;
+          margin-bottom: 6upx;
+        }
       }
     }
   }
-}
-// 新的花束花礼和绿植花材样式
-.flower-module {
-  padding: 0;
-  
-  .flower-section {
-    padding: 24upx 20upx;
+  // 数据总览模块
+  .overview-module {
     background: #ffffff;
-    border-bottom: 12upx solid #f5f5f5;
-    
-    &:last-child {
-      border-bottom: none;
-    }
+    border-radius: 16upx;
+    padding: 0;
+    overflow: hidden;
     
-    .section-header {
-      display: flex;
-      align-items: center;
-      justify-content: flex-start;
-      margin-bottom: 24upx;
-      padding-left: 0;
+    .overview-header {
+      background: linear-gradient(135deg, #f8fafb 0%, #ffffff 100%);
+      padding: 30upx 30upx 20upx;
+      border-bottom: 1upx solid #f0f0f0;
       
-      .header-title {
-        padding: 0;
+      .overview-title {
         font-size: 32upx;
-        font-weight: 700;
+        font-weight: 600;
         color: #333;
-        letter-spacing: 1upx;
+        margin-bottom: 8upx;
       }
     }
     
-    .icon-grid {
+    .overview-grid {
       display: grid;
-      grid-template-columns: repeat(4, 1fr);
+      grid-template-columns: repeat(2, 1fr);
+      padding: 20upx;
       gap: 16upx;
-      max-width: 100%;
       
-      .icon-item {
-        width: 100%;
-        padding: 12upx;
+      .overview-item {
+        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(2n)) {
+          &::after {
+            content: '';
+            position: absolute;
+            right: 0;
+            top: 0;
+            transform: none;
+            width: 0;
+            height: 0;
+            background: transparent;
+          }
+        }
+        
+        &:nth-child(n+3) {
+          &::before {
+            content: '';
+            position: absolute;
+            left: 0;
+            right: 0;
+            top: 0;
+            height: 0;
+            background: transparent;
+          }
+        }
+        
+        &:active {
+          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: 40upx;
+          font-weight: 700;
+          color: #049E2C;
+          margin-bottom: 12upx;
+          line-height: 1;
+        }
+        
+        .item-label {
+          font-size: 26upx;
+          color: #666;
+          line-height: 1;
+          font-weight: 500;
+        }
+      }
+    }
+  }
+  // 新的花束花礼和绿植花材样式
+  .flower-module {
+    padding: 0;
+    
+    .flower-section {
+      padding: 24upx 20upx;
+      background: #ffffff;
+      border-bottom: 12upx solid #f5f5f5;
+      
+      &:last-child {
+        border-bottom: none;
+      }
+      
+      .section-header {
         display: flex;
-        flex-direction: column;
         align-items: center;
-        gap: 8upx;
+        justify-content: flex-start;
+        margin-bottom: 24upx;
+        padding-left: 0;
+        
+        .header-title {
+          padding: 0;
+          font-size: 32upx;
+          font-weight: 700;
+          color: #333;
+          letter-spacing: 1upx;
+        }
+      }
+      
+      .icon-grid {
+        display: grid;
+        grid-template-columns: repeat(4, 1fr);
+        gap: 16upx;
+        max-width: 100%;
         
-        .icon-wrapper {
-          width: 100upx;
-          height: 100upx;
+        .icon-item {
+          width: 100%;
+          padding: 12upx;
+          text-align: center;
           display: flex;
+          flex-direction: column;
           align-items: center;
-          justify-content: center;
-          background: linear-gradient(135deg, #f0f9ff 0%, #e0f2fe 100%);
-          border-radius: 20upx;
+          gap: 8upx;
           
-          .icon-emoji {
-            font-size: 48upx;
-            line-height: 1;
+          .icon-wrapper {
+            width: 100upx;
+            height: 100upx;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            background: linear-gradient(135deg, #f0f9ff 0%, #e0f2fe 100%);
+            border-radius: 20upx;
+            
+            .icon-emoji {
+              font-size: 48upx;
+              line-height: 1;
+            }
+          }
+          
+          .icon-text {
+            font-size: 25upx;
+            color: #333;
+            line-height: 1.4;
+            font-weight: 500;
           }
-        }
-        
-        .icon-text {
-          font-size: 25upx;
-          color: #333;
-          line-height: 1.4;
-          font-weight: 500;
         }
       }
     }
   }
-}
-.order-page {
-.ghs_list_page {
-  background-color: rgba(255, 255, 255, 1);
-  position: relative;
-  width: 750upx; 
-  overflow: hidden;
-  .profile-section {
-    background-color: #09C567;
-    padding: 30upx 30upx 0upx 30upx;
-    border-radius: 0;
-    .profile-header {
-      display: flex;
-      align-items: center;
-      .avatar-container {
-        width: 120upx;
-        height: 120upx;
-        border-radius: 60upx;
-        overflow: hidden;
-        background-color: rgba(255,255,255,0.2);
-        border: 1upx solid #ffffff;
-        .avatar-button {
-          background: none !important;
-          border: none !important;
-          padding: 0 !important;
-          margin: 0 !important;
-          line-height: 1;
-          display: block;
-          width: 120upx;
-          height: 120upx;
-          color: transparent !important;
-          &::after { border: none !important; }
-        }
-        .avatar {
+  .order-page {
+  .ghs_list_page {
+    background-color: rgba(255, 255, 255, 1);
+    position: relative;
+    width: 750upx; 
+    overflow: hidden;
+    .profile-section {
+      background-color: #09C567;
+      padding: 30upx 30upx 0upx 30upx;
+      border-radius: 0;
+      .profile-header {
+        display: flex;
+        align-items: center;
+        .avatar-container {
           width: 120upx;
           height: 120upx;
           border-radius: 60upx;
+          overflow: hidden;
+          background-color: rgba(255,255,255,0.2);
+          border: 1upx solid #ffffff;
+          .avatar-button {
+            background: none !important;
+            border: none !important;
+            padding: 0 !important;
+            margin: 0 !important;
+            line-height: 1;
+            display: block;
+            width: 120upx;
+            height: 120upx;
+            color: transparent !important;
+            &::after { border: none !important; }
+          }
+          .avatar {
+            width: 120upx;
+            height: 120upx;
+            border-radius: 60upx;
+          }
         }
-      }
-      .user-info {
-        flex: 1;
-        margin-left: 24upx;
-        .username {
-          display: block;
-          font-size: 36upx;
-          font-weight: bold;
-          color: #ffffff;
+        .user-info {
+          flex: 1;
+          margin-left: 24upx;
+          .username {
+            display: block;
+            font-size: 36upx;
+            font-weight: bold;
+            color: #ffffff;
+          }
+          .user-id {
+            display: block;
+            margin-top: 6upx;
+            font-size: 26upx;
+            color: #ffffff;
+          }
         }
-        .user-id {
-          display: block;
-          margin-top: 6upx;
-          font-size: 26upx;
-          color: #ffffff;
+        .more-icon {
+          margin-left: 12upx;
+          width: 60upx;
+          height: 60upx;
+          border-radius: 30upx;
+          align-items: center;
+          justify-content: center;
+          display: flex;
+          // background: rgba(255,255,255,0.15);
+          // border: 1upx solid rgba(255,255,255,0.35);
         }
       }
-      .more-icon {
-        margin-left: 12upx;
-        width: 60upx;
-        height: 60upx;
-        border-radius: 30upx;
-        align-items: center;
-        justify-content: center;
-        display: flex;
-        // background: rgba(255,255,255,0.15);
-        // border: 1upx solid rgba(255,255,255,0.35);
+      .function-grid--overlay {
+        background: transparent;
+      }
+      .function-item--overlay {
+        border-color: rgba(255,255,255,0.5);
+        background: rgba(255,255,255,0.12);
+      }
+      .function-text--overlay {
+        color: #ffffff;
       }
     }
-    .function-grid--overlay {
-      background: transparent;
+    .flex-col {
+      display: flex;
+      flex-direction: column;
     }
-    .function-item--overlay {
-      border-color: rgba(255,255,255,0.5);
-      background: rgba(255,255,255,0.12);
+    .flex-row {
+      display: flex;
+      flex-direction: row;
     }
-    .function-text--overlay {
-      color: #ffffff;
+    .justify-end {
+        display: flex;
+        justify-content: flex-end;
     }
-  }
-  .flex-col {
-    display: flex;
-    flex-direction: column;
-  }
-  .flex-row {
-    display: flex;
-    flex-direction: row;
-  }
-  .justify-end {
-      display: flex;
-      justify-content: flex-end;
-  }
-  .justify-between {
-      display: flex;
-      justify-content: space-between;
-  }
-
-  .ghs_list_area {
-    width: 750upx;
-    background-color: #ece5e5;
-    .ghs_box {
-      background-color: rgba(255, 255, 255, 1);
-      position: relative;
+    .justify-between {
+        display: flex;
+        justify-content: space-between;
+    }
+  
+    .ghs_list_area {
       width: 750upx;
-      height: auto;
-      margin-bottom:35upx;
-      .image-text_7 {
-        width: 674upx;
-        height: 120upx;
-        margin: 40upx 0 0 31upx;
-        .section_1 {
-          width: 120upx;
+      background-color: #ece5e5;
+      .ghs_box {
+        background-color: rgba(255, 255, 255, 1);
+        position: relative;
+        width: 750upx;
+        height: auto;
+        margin-bottom:35upx;
+        .image-text_7 {
+          width: 674upx;
           height: 120upx;
-          .logo{
-            width:120upx;
-            height:120upx;
-            border-radius:10upx;
-          }
-        }
-        .text-group_7 {
-          width: 533upx;
-          height: 99upx;
-          margin-top: 5upx;
-          .text_8 {
-            display:inline-block;
-            width: 550upx;
-            height: 38upx;
-            color: rgba(51, 51, 51, 1);
-            font-size: 36upx;
-            font-weight:bold;
-            text-align: left;
-            white-space: nowrap;
-            line-height:38upx;
-            overflow:hidden;
+          margin: 40upx 0 0 31upx;
+          .section_1 {
+            width: 120upx;
+            height: 120upx;
+            .logo{
+              width:120upx;
+              height:120upx;
+              border-radius:10upx;
+            }
           }
-          .text_9 {
+          .text-group_7 {
             width: 533upx;
-            height: 25upx;
-            overflow-wrap: break-word;
-            color: rgba(153, 153, 153, 1);
-            font-size: 28upx;
-            text-align: left;
-            white-space: nowrap;
-            line-height: 24upx;
-            margin-top: 10upx;
+            height: 99upx;
+            margin-top: 5upx;
+            .text_8 {
+              display:inline-block;
+              width: 550upx;
+              height: 38upx;
+              color: rgba(51, 51, 51, 1);
+              font-size: 36upx;
+              font-weight:bold;
+              text-align: left;
+              white-space: nowrap;
+              line-height:38upx;
+              overflow:hidden;
+            }
+            .text_9 {
+              width: 533upx;
+              height: 25upx;
+              overflow-wrap: break-word;
+              color: rgba(153, 153, 153, 1);
+              font-size: 28upx;
+              text-align: left;
+              white-space: nowrap;
+              line-height: 24upx;
+              margin-top: 10upx;
+            }
           }
         }
-      }
-      .box_4 {
-        background-color: rgba(238, 238, 238, 1);
-        width: 750upx;
-        height: 1upx;
-        margin-top: 40upx;
-      }
-      .box_9 {
-        width: 100%;
-        height: 60upx;
-        margin: 23upx 0 22upx 15upx;
-        .tag_2 {
-          background-color: rgba(255, 255, 255, 1);
-          border-radius: 8px;
-          height: 60upx;
-          line-height:60upx;
-          border: 2px solid rgba(221, 221, 221, 1);
-          color: rgba(51, 51, 51, 1);
-          font-size: 30upx;
-          margin:0 16upx 0 0;
-          text-align:center;
-          float:left;
-          padding-left:15upx;
-          padding-right:15upx;
-                  }
+        .box_4 {
+          background-color: rgba(238, 238, 238, 1);
+          width: 750upx;
+          height: 1upx;
+          margin-top: 40upx;
         }
-        .box_6 {
-        background-color: rgb(248, 242, 242);
-        width: 750upx;
-        height:95upx;
-        .show_clear_area {
-          width: 247upx;
-          height: 29upx;
-          margin: 26upx 0 0 30upx;
-          .waite_clear_order {
-            width: 214upx;
+        .box_9 {
+          width: 100%;
+          height: 60upx;
+          margin: 23upx 0 22upx 15upx;
+          .tag_2 {
+            background-color: rgba(255, 255, 255, 1);
+            border-radius: 8px;
+            height: 60upx;
+            line-height:60upx;
+            border: 2px solid rgba(221, 221, 221, 1);
+            color: rgba(51, 51, 51, 1);
+            font-size: 30upx;
+            margin:0 16upx 0 0;
+            text-align:center;
+            float:left;
+            padding-left:15upx;
+            padding-right:15upx;
+                    }
+          }
+          .box_6 {
+          background-color: rgb(248, 242, 242);
+          width: 750upx;
+          height:95upx;
+          .show_clear_area {
+            width: 247upx;
             height: 29upx;
-            overflow-wrap: break-word;
-            color: rgba(255, 40, 66, 1);
-            font-size: 31upx;
+            margin: 26upx 0 0 30upx;
+            .waite_clear_order {
+              width: 214upx;
+              height: 29upx;
+              overflow-wrap: break-word;
+              color: rgba(255, 40, 66, 1);
+              font-size: 31upx;
+              font-weight:bold;
+              text-align: left;
+              white-space: nowrap;
+              line-height: 29upx;
+            }
+          }
+          }
+          .button_4 {
+          height: 80upx;
+          line-height:80upx;
+          text-align:center;
+          background-color:#09C567;
+          background-size: 137upx 137upx;
+          width: 130upx;
+          position: absolute;
+          left: 570upx;
+          top: 95upx;
+          border-radius:39upx;
+          .text_13 {
+            color: rgba(255, 255, 255, 1);
+            font-size: 30upx;
             font-weight:bold;
-            text-align: left;
-            white-space: nowrap;
-            line-height: 29upx;
           }
         }
+        .button_5 {
+          height: 80upx;
+          line-height:80upx;
+          text-align:center;
+          background-color:#CCCCCC;
+          background-size: 137upx 137upx;
+          width: 130upx;
+          position: absolute;
+          left: 570upx;
+          top: 95upx;
+          border-radius:39upx;
+          .text_13 {
+            color: rgba(255, 255, 255, 1);
+            font-size: 30upx;
+            font-weight:bold;
+          }
         }
-        .button_4 {
-        height: 80upx;
-        line-height:80upx;
-        text-align:center;
-        background-color:#09C567;
-        background-size: 137upx 137upx;
-        width: 130upx;
-        position: absolute;
-        left: 570upx;
-        top: 95upx;
-        border-radius:39upx;
-        .text_13 {
-          color: rgba(255, 255, 255, 1);
-          font-size: 30upx;
-          font-weight:bold;
-        }
-      }
-      .button_5 {
-        height: 80upx;
-        line-height:80upx;
-        text-align:center;
-        background-color:#CCCCCC;
-        background-size: 137upx 137upx;
-        width: 130upx;
-        position: absolute;
-        left: 570upx;
-        top: 95upx;
-        border-radius:39upx;
-        .text_13 {
-          color: rgba(255, 255, 255, 1);
-          font-size: 30upx;
-          font-weight:bold;
-        }
-      }
-      .button_6 {
-        height: 80upx;
-        line-height:80upx;
-        text-align:center;
-        background-color:rgb(152, 153, 197);
-        background-size: 137upx 137upx;
-        width: 170upx;
-        position: absolute;
-        left: 540upx;
-        top: 95upx;
-        border-radius:39upx;
-        .text_13 {
-          color: rgba(255, 255, 255, 1);
-          font-size: 30upx;
-          font-weight:bold;
+        .button_6 {
+          height: 80upx;
+          line-height:80upx;
+          text-align:center;
+          background-color:rgb(152, 153, 197);
+          background-size: 137upx 137upx;
+          width: 170upx;
+          position: absolute;
+          left: 540upx;
+          top: 95upx;
+          border-radius:39upx;
+          .text_13 {
+            color: rgba(255, 255, 255, 1);
+            font-size: 30upx;
+            font-weight:bold;
+          }
         }
-      }
-      .button_7 {
-        height: 80upx;
-        line-height:80upx;
-        text-align:center;
-        background-color:#09C567;
-        background-size: 137upx 137upx;
-        width: 180upx;
-        position: absolute;
-        left: 330upx;
-        top: 95upx;
-        border-radius:39upx;
-        .text_13 {
-          color: rgba(255, 255, 255, 1);
-          font-size: 30upx;
-          font-weight:bold;
+        .button_7 {
+          height: 80upx;
+          line-height:80upx;
+          text-align:center;
+          background-color:#09C567;
+          background-size: 137upx 137upx;
+          width: 180upx;
+          position: absolute;
+          left: 330upx;
+          top: 95upx;
+          border-radius:39upx;
+          .text_13 {
+            color: rgba(255, 255, 255, 1);
+            font-size: 30upx;
+            font-weight:bold;
+          }
         }
       }
     }
   }
-}
-}
-
-/* 商城选项弹框样式 */
-.mall-options-container {
-  width: 600upx;
-  background-color: #fff;
-  border-radius: 24upx;
-  overflow: hidden;
-  animation: popup-in 0.3s ease-out;
+  }
   
-  .mall-options-buttons {
-    padding: 50upx 40upx 50upx;
-    display: flex;
-    flex-direction: column;
-    gap: 40upx;
-    align-items: center;
- 
-    .mall-option-btn {
+  /* 商城选项弹框样式 */
+  .mall-options-container {
+    width: 600upx;
+    background-color: #fff;
+    border-radius: 24upx;
+    overflow: hidden;
+    animation: popup-in 0.3s ease-out;
+    
+    .mall-options-buttons {
+      padding: 50upx 40upx 50upx;
       display: flex;
+      flex-direction: column;
+      gap: 40upx;
       align-items: center;
-      justify-content: center;
-      padding: 32upx 40upx;
-      background-color: #f8f9fa;
-      border-radius: 20upx;
-      transition: all 0.2s ease;
-      width: 100%;
-      
-      &:active {
-        background-color: #e9ecef;
-        transform: scale(0.98);
-      }
-      
-      .option-icon {
-        font-size: 56upx;
-        margin-right: 30upx;
-        width: 70upx;
-        text-align: center;
-      }
-      
-      .option-text {
-        font-size: 42upx;
-        color: #333;
-        font-weight: 500;
+   
+      .mall-option-btn {
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        padding: 32upx 40upx;
+        background-color: #f8f9fa;
+        border-radius: 20upx;
+        transition: all 0.2s ease;
+        width: 100%;
+        
+        &:active {
+          background-color: #e9ecef;
+          transform: scale(0.98);
+        }
+        
+        .option-icon {
+          font-size: 56upx;
+          margin-right: 30upx;
+          width: 70upx;
+          text-align: center;
+        }
+        
+        .option-text {
+          font-size: 42upx;
+          color: #333;
+          font-weight: 500;
+        }
       }
     }
   }
-}
-
-@keyframes popup-in {
-  0% {
-    opacity: 0;
-    transform: scale(0.8) translateY(20upx);
-  }
-  100% {
-    opacity: 1;
-    transform: scale(1) translateY(0);
+  
+  @keyframes popup-in {
+    0% {
+      opacity: 0;
+      transform: scale(0.8) translateY(20upx);
+    }
+    100% {
+      opacity: 1;
+      transform: scale(1) translateY(0);
+    }
   }
-}
-
-/* 供货商提示弹框样式 */
-.supplier-notice-popup {
-  .supplier-notice-container {
-    width: 650upx;
-    background-color: #fff;
-    border-radius: 20upx;
-    overflow: hidden;
-    
-    .supplier-notice-header {
-      padding: 40upx 30upx 20upx;
-      text-align: center;
-      background-color: #f8f9fa;
-      border-bottom: 1upx solid #e9ecef;
+  
+  /* 供货商提示弹框样式 */
+  .supplier-notice-popup {
+    .supplier-notice-container {
+      width: 650upx;
+      background-color: #fff;
+      border-radius: 20upx;
+      overflow: hidden;
       
-      .supplier-notice-title {
-        font-size: 36upx;
-        font-weight: bold;
-        color: #333;
+      .supplier-notice-header {
+        padding: 40upx 30upx 20upx;
+        text-align: center;
+        background-color: #f8f9fa;
+        border-bottom: 1upx solid #e9ecef;
+        
+        .supplier-notice-title {
+          font-size: 36upx;
+          font-weight: bold;
+          color: #333;
+        }
       }
-    }
-    
-    .supplier-notice-content {
-      padding: 20upx 0;
       
-      .supplier-list {
-        padding: 0 30upx;
+      .supplier-notice-content {
+        padding: 20upx 0;
         
-        .supplier-item {
-          display: flex;
-          align-items: center;
-          padding: 20upx 0;
-          border-bottom: 1upx solid #f0f0f0;
+        .supplier-list {
+          padding: 0 30upx;
           
-          &:last-child {
-            border-bottom: none;
-          }
-          
-          .supplier-icon {
-            width: 60upx;
-            height: 60upx;
-            background-color: #e3f2fd;
-            border-radius: 50%;
+          .supplier-item {
             display: flex;
             align-items: center;
-            justify-content: center;
-            font-size: 32upx;
-            margin-right: 20upx;
-          }
-          
-          .supplier-name {
-            font-size: 32upx;
-            color: #333;
-            flex: 1;
-            font-weight: 500;
+            padding: 20upx 0;
+            border-bottom: 1upx solid #f0f0f0;
+            
+            &:last-child {
+              border-bottom: none;
+            }
+            
+            .supplier-icon {
+              width: 60upx;
+              height: 60upx;
+              background-color: #e3f2fd;
+              border-radius: 50%;
+              display: flex;
+              align-items: center;
+              justify-content: center;
+              font-size: 32upx;
+              margin-right: 20upx;
+            }
+            
+            .supplier-name {
+              font-size: 32upx;
+              color: #333;
+              flex: 1;
+              font-weight: 500;
+            }
           }
         }
       }
-    }
-    
-    .supplier-notice-footer {
-      padding: 30upx;
-      text-align: center;
-      background-color: #f8f9fa;
-      border-top: 1upx solid #e9ecef;
-      
-      .supplier-notice-tip {
-        display: block;
-        font-size: 40upx;
-        font-weight: bold;
-        color: red;
-        margin-bottom: 30upx;
-        line-height: 1.4;
-      }
       
-      .supplier-notice-buttons {
-        display: flex;
-        justify-content: space-between;
-        gap: 20upx;
+      .supplier-notice-footer {
+        padding: 30upx;
+        text-align: center;
+        background-color: #f8f9fa;
+        border-top: 1upx solid #e9ecef;
         
-        .admin-button-com {
-          flex: 1;
-          margin: 0;
-          padding: 20upx 0;
-          height: auto;
-          line-height: normal;
-          font-size: 34upx;
+        .supplier-notice-tip {
+          display: block;
+          font-size: 40upx;
           font-weight: bold;
+          color: red;
+          margin-bottom: 30upx;
+          line-height: 1.4;
+        }
+        
+        .supplier-notice-buttons {
+          display: flex;
+          justify-content: space-between;
+          gap: 20upx;
+          
+          .admin-button-com {
+            flex: 1;
+            margin: 0;
+            padding: 20upx 0;
+            height: auto;
+            line-height: normal;
+            font-size: 34upx;
+            font-weight: bold;
+          }
         }
       }
     }
   }
-}
-
-// 警告提示区域样式
-.alert-card {
-  margin: 15upx 10upx;
-  border-radius: 16upx;
-  overflow: hidden;
-  box-shadow: 0 4upx 12upx rgba(0, 0, 0, 0.08);
-  transition: all 0.3s ease;
-  border: 3upx solid;
   
-  &:active {
-    transform: translateY(2upx);
-    box-shadow: 0 2upx 8upx rgba(0, 0, 0, 0.06);
-  }
-  
-  .alert-content {
-    display: flex;
-    align-items: center;
-    justify-content: space-between;
-    padding: 30upx 18upx;
-    min-height: 100upx;
+  // 警告提示区域样式
+  .alert-card {
+    margin: 15upx 10upx;
+    border-radius: 16upx;
+    overflow: hidden;
+    box-shadow: 0 4upx 12upx rgba(0, 0, 0, 0.08);
+    transition: all 0.3s ease;
+    border: 3upx solid;
     
-    .alert-text {
-      font-size: 36upx;
-      font-weight: 600;
-      line-height: 1.6;
-      text-align: center;
-      width: 100%;
+    &:active {
+      transform: translateY(2upx);
+      box-shadow: 0 2upx 8upx rgba(0, 0, 0, 0.06);
+    }
+    
+    .alert-content {
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
+      padding: 30upx 18upx;
+      min-height: 100upx;
+      
+      .alert-text {
+        font-size: 36upx;
+        font-weight: 600;
+        line-height: 1.6;
+        text-align: center;
+        width: 100%;
+      }
     }
   }
-}
-
-.alert-card-error {
-  background-color: #ff6b6b;
-  border-color: #ff6b6b;
-  .alert-content {
-    .alert-text {
-      font-size:32upx;
-      color: white;
+  
+  .alert-card-error {
+    background-color: #ff6b6b;
+    border-color: #ff6b6b;
+    .alert-content {
+      .alert-text {
+        font-size:32upx;
+        color: white;
+      }
     }
   }
-}
-
-.warning-banner {
-  background-color: #ff6b6b;
-  border-radius: 8upx;
-  margin: 0upx 10upx 20upx 10upx;
-  padding: 20upx 24upx;
-  color: #ffffff;
-  font-size: 32upx;
-  font-weight: 600;
-  text-align: center;
-  line-height: 1.4;
-}
-</style>
+  
+  .warning-banner {
+    background-color: #ff6b6b;
+    border-radius: 8upx;
+    margin: 0upx 10upx 20upx 10upx;
+    padding: 20upx 24upx;
+    color: #ffffff;
+    font-size: 32upx;
+    font-weight: 600;
+    text-align: center;
+    line-height: 1.4;
+  }
+  </style>

+ 148 - 0
hdApp/src/components/custom-tab-bar/custom-tab-bar.vue

@@ -0,0 +1,148 @@
+<template>
+	<view>
+		<!-- 占位符,防止底部内容被遮挡 -->
+		<view class="tab-bar-placeholder" :style="{ paddingBottom: safeAreaBottom + 'px' }"></view>
+		<view class="custom-tab-bar" :style="{ paddingBottom: safeAreaBottom + 'px' }">
+			<view class="tab-bar-item" v-for="(item, index) in list" :key="index" @click="switchTab(item, index)">
+				<image class="tab-icon" :src="current === index ? item.selectedIconPath : item.iconPath"></image>
+				<text class="tab-text" :style="{ color: current === index ? selectedColor : color }">{{ item.text }}</text>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	name: 'custom-tab-bar',
+	props: {
+		current: {
+			type: Number,
+			default: 0
+		}
+	},
+	data() {
+		return {
+			color: '#444444',
+			selectedColor: '#09C567',
+			safeAreaBottom: 0,
+			list: [
+				{
+					pagePath: '/admin/home/workbench',
+					iconPath: '/static/images/common/shop-tab_no.png',
+					selectedIconPath: '/static/images/common/shop-tab.png',
+					text: '买花'
+				},
+				{
+					pagePath: '/admin/home/bought',
+					iconPath: '/static/images/common/shop-tab_no.png',
+					selectedIconPath: '/static/images/common/shop-tab.png',
+					text: '买花记录'
+				},
+				{
+					pagePath: '/admin/home/mall',
+					iconPath: '/static/images/common/shop-tab_no.png',
+					selectedIconPath: '/static/images/common/shop-tab.png',
+					text: '商城'
+				},
+				{
+					pagePath: '/admin/home/order',
+					iconPath: '/static/images/common/order-no.png',
+					selectedIconPath: '/static/images/common/order-is.png',
+					text: '订单'
+				},
+				{
+					pagePath: '/admin/home/member',
+					iconPath: '/static/images/common/member-no.png',
+					selectedIconPath: '/static/images/common/member-is.png',
+					text: '客户'
+				},
+				{
+					pagePath: '/admin/home/me',
+					iconPath: '/static/images/common/user-no.png',
+					selectedIconPath: '/static/images/common/shop-me.png',
+					text: '我的'
+				}
+			]
+		}
+	},
+	created() {
+		const sysInfo = uni.getSystemInfoSync();
+		this.safeAreaBottom = sysInfo.safeAreaInsets ? sysInfo.safeAreaInsets.bottom : 0;
+		// 隐藏原生tabbar,确保兼容性
+		uni.hideTabBar({
+			animation: false,
+			fail: () => {}
+		});
+	},
+	methods: {
+		switchTab(item, index) {
+			if (this.current === index) return;
+			
+			// 原生 tabBar 页面列表
+			const tabBarPages = [
+				'/admin/home/workbench',
+				'/admin/home/bought',
+				'/admin/home/mall',
+				'/admin/home/order',
+				'/admin/home/member'
+			];
+			
+			if (tabBarPages.includes(item.pagePath)) {
+				uni.switchTab({
+					url: item.pagePath
+				});
+			} else {
+				// 非原生 tabBar 页面使用 reLaunch 进行跳转,模拟 switchTab 效果
+				uni.reLaunch({
+					url: item.pagePath
+				});
+			}
+		}
+	}
+}
+</script>
+
+<style lang="scss" scoped>
+.tab-bar-placeholder {
+	height: 100upx; /* 与 custom-tab-bar 基础高度一致 */
+	background-color: transparent;
+	width: 100%;
+	box-sizing: content-box;
+}
+
+.custom-tab-bar {
+	position: fixed;
+	bottom: 0;
+	left: 0;
+	right: 0;
+	height: 100upx; /* 基础高度 */
+	background-color: #ffffff;
+	display: flex;
+	flex-direction: row;
+	align-items: center;
+	justify-content: space-around;
+	border-top: 1upx solid #e5e5e5;
+	z-index: 9999;
+	/* box-sizing: content-box; 会通过行内样式增加 padding-bottom 来适配底部安全区 */
+	box-sizing: content-box;
+}
+
+.tab-bar-item {
+	flex: 1;
+	display: flex;
+	flex-direction: column;
+	align-items: center;
+	justify-content: center;
+	height: 100%;
+}
+
+.tab-icon {
+	width: 54upx;
+	height: 54upx;
+	margin-bottom: 6upx;
+}
+
+.tab-text {
+	font-size: 22upx;
+}
+</style>

+ 3 - 0
hdApp/src/main.js

@@ -55,6 +55,9 @@ Vue.component("t-tr", tTr);
 Vue.component("t-th", tTh);
 Vue.component("t-td", tTd);
 
+import customTabBar from "@/components/custom-tab-bar/custom-tab-bar.vue";
+Vue.component("custom-tab-bar", customTabBar);
+
 App.mpType = "app";
 
 const app = new Vue({

+ 15 - 13
hdApp/src/pages.json

@@ -1,6 +1,8 @@
 {
 	"pages": [
-		{ "path": "admin/home/workbench", "style": { "navigationBarTitleText": "", "enablePullDownRefresh": true } },
+		{ "path": "admin/home/workbench", "style": { "navigationBarTitleText": "买花", "enablePullDownRefresh": true } },
+		{ "path": "admin/home/bought", "style": { "navigationBarTitleText": "买花记录", "enablePullDownRefresh": true } },
+		{ "path": "admin/home/mall", "style": { "navigationBarTitleText": "商城", "enablePullDownRefresh": true } },
 		{ "path": "admin/home/login","style": {"navigationBarTitleText": "","enablePullDownRefresh": false}},
 		{ "path": "admin/home/loginRemind","style": {"navigationBarTitleText": "登录提示","enablePullDownRefresh": false}},
 		{ "path": "admin/home/appLoginRemind","style": {"navigationBarTitleText": "无法登录怎么办","enablePullDownRefresh": false}},
@@ -618,6 +620,18 @@
 				"pagePath": "admin/home/workbench",
 				"iconPath": "static/images/common/shop-tab_no.png",
 				"selectedIconPath": "static/images/common/shop-tab.png",
+				"text": "买花"
+			},
+			{
+				"pagePath": "admin/home/bought",
+				"iconPath": "static/images/common/shop-tab_no.png",
+				"selectedIconPath": "static/images/common/shop-tab.png",
+				"text": "买花记录"
+			},
+			{
+				"pagePath": "admin/home/mall",
+				"iconPath": "static/images/common/shop-tab_no.png",
+				"selectedIconPath": "static/images/common/shop-tab.png",
 				"text": "商城"
 			},
 			{
@@ -631,18 +645,6 @@
 				"iconPath": "static/images/common/member-no.png",
 				"selectedIconPath": "static/images/common/member-is.png",
 				"text": "客户"
-			},
-			{
-				"pagePath": "admin/home/apply",
-				"iconPath": "static/images/common/category-no.png",
-				"selectedIconPath": "static/images/common/shop-apply.png",
-				"text": "应用"
-			},
-			{
-				"pagePath": "admin/home/me",
-				"iconPath": "static/images/common/user-no.png",
-				"selectedIconPath": "static/images/common/shop-me.png",
-				"text": "我的"
 			}
 		]
 	}

+ 0 - 264
hdApp/src/pagesPurchase/shopping.vue

@@ -1,264 +0,0 @@
-<template>
-  <view class="order-page">
-    <app-tabs :tabs="tabs" :isFixed="true" :currentTab="tabIndex" @change="change" itemWidth="20%"/>
-
-			<view style="margin-left:60upx;margin-top:110upx;padding-bottom:30upx;position: relative;">
-				<DateSelect @selectDateFn="selectDateFn" defaultShowName='时间' />
-        
-        <button class="admin-button-com mini-btn blue" style="position: absolute;right:300upx;top:-8upx;" @click="selGhs()">{{ ghsName==''?'选供货商':ghsName }}</button>
-
-        <button class="admin-button-com mini-btn blue" style="position: absolute;right:80upx;top:-8upx;" @click="resetSearch()">重置搜索</button>
-
-			</view>
-
-    <block v-if="!$util.isEmpty(list.data)">
-    <view class="pay_list">
-        <OrderItem v-for="(item, index) in list.data" :key="index" :info="item" @click="goToDetail"></OrderItem>
-    </view>
-    </block>
-    <block v-else>
-    <view>
-      <AppWrapperEmpty title="暂无数据" :is-empty="$util.isEmpty(list.data)"/>
-    </view>
-    </block>
-
-    <view class="app-footer open_btn">
-			<view @click="addEvent" class="admin-button-com big blue">新增采购</view>
-		</view>
-
-  </view>
-</template>
-<script>
-import AppTabs from "@/components/plugin/tabs";
-import OrderItem from "./orderItem";
-import { list } from "@/mixins";
-import AppWrapperEmpty from "@/components/app-wrapper-empty";
-import { ghsList, purchaseList } from "@/api/purchase/index";
-import DateSelect from "@/components/module/dateSelect";
-export default {
-  components: {
-    AppWrapperEmpty,
-    OrderItem,
-    AppTabs,
-    DateSelect
-  },
-  mixins: [list],
-  data () {
-    return {
-       tabs: [
-        {
-          name: "全部",
-          value: 0,
-          key: '0'
-        },
-        {
-          name: "待付款",
-          value: 0,
-          key: '1'
-        },
-        {
-          name: "待发货",
-          value: 0,
-          key: '2'
-        },
-        {
-          name: "配送中",
-          value: 0,
-          key: '3'
-        },
-        {
-          name: "已完成",
-          value: 0,
-          key: '4'
-        }
-      ],
-      list: {
-        data: []
-      },
-      supplierList: [],
-      tabIndex: 0,
-      status: '0',
-      refreshPage:0,
-			searchContent:'',			
-			searchTime:'',
-			startTime:'',
-      ghsId:0,
-      ghsName:''
-    }
-  },
-  onReachBottom () {
-    if (!this.list.finished) {
-      this.getMyPurchase().then(res => {
-        uni.stopPullDownRefresh()
-      });
-    } else {
-      uni.stopPullDownRefresh()
-    }
-  },
-  onPullDownRefresh () {
-    this.resetList();
-    this.getMyPurchase().then(res => {
-      uni.stopPullDownRefresh()
-    })
-  },
-  onShow(){
-    if(this.refreshPage == 1){
-      this.resetList()
-      this.getMyPurchase()
-      this.refreshPage = 0
-    }
-  },
-  methods: {
-    selGhs(){
-      this.$util.pageTo({ url: "/pagesPurchase/selectGhs"})
-    },
-    resetSearch(){
-      this.ghsId = 0
-      this.ghsName=''
-      this.searchTime = ''
-      this.startTime = ''
-      this.endTime = ''
-      this.resetList()
-      this.getMyPurchase()      
-    },
-		selectDateFn(val) {
-			this.searchTime = val.searchTime
-			this.startTime = val.startTime
-			this.endTime = val.endTime
-      this.resetList()
-      this.getMyPurchase()
-		},	
-    change(e) {
-      if (this.tabIndex != e.index) {
-        uni.pageScrollTo({
-          scrollTop: 0,
-          duration: 0
-        });
-        this.resetList();
-        this.list.finished = true;
-        this.tabIndex = e.index;
-        this.status = e.item.key;
-        this.getMyPurchase().then(() => {
-          this.list.finished = false;
-        });
-      }
-    },
-    init() {
-      if(this.option.ghsId){
-        this.ghsId = this.option.ghsId?this.option.ghsId:0
-        this.ghsName = this.option.ghsName?this.option.ghsName:''
-      }
-      this.getMyPurchase()
-    },
-    getMyPurchase () {
-      return purchaseList({ status: this.status,page: this.list.page,searchTime: this.searchTime,startTime: this.startTime,endTime: this.endTime,ghsId:this.ghsId}).then(res => {
-        this.completes(res)
-        if (this.$util.isEmpty(res.data)){
-          return false
-        }
-        this.tabs[0].value = res.data.shop.totalPurchaseOrder
-        this.tabs[1].value = res.data.shop.cgUnPay
-        this.tabs[2].value = res.data.shop.cgUnSend
-        this.tabs[3].value = res.data.shop.cgSending
-        this.tabs[4].value = res.data.shop.cgFinish
-      })
-    },
-    goToDetail (val) {
-      uni.navigateTo({ url: '/pagesPurchase/purDetails?id=' + val.id })
-    },
-    addEvent() {
-      uni.navigateTo({url: '/pagesPurchase/order'})
-    }
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-.order-page {
-  .tabs {
-    height: 80upx;
-    line-height: 80upx;
-    & > view {
-      // padding: 0 80upx;
-      width: 50%;
-      text-align: center;
-      font-size: 28upx;
-      color: #666;
-      display: inline-block;
-    }
-    & > .active {
-      position: relative;
-      color: #3385ff;
-      font-weight: 700;
-    }
-    & > .active::after {
-      content: "";
-      position: absolute;
-      bottom: 0;
-      left: 50%;
-      transform: translateX(-50%);
-      width: 70upx;
-      height: 6upx;
-      background: #3385ff;
-    }
-  }
-  .order_list {
-    // height: 200upx;
-    height: 100%;
-    background: #f0f2f6;
-    padding: 0 0 20upx;
-    .list_item {
-      margin: 20upx 0 0;
-      // padding-left: 20upx;
-      position: relative;
-      height: 180upx;
-      width: 100vw;
-      background: #fff;
-      display: flex;
-      align-items: center;
-      & > image {
-        margin-left: 30upx;
-        width: 120upx;
-        height: 120upx;
-        border-radius: 60upx;
-      }
-      & > .store_name {
-        margin-left: 30upx;
-        & > .store_title {
-          margin-bottom: 30upx;
-          font-size: 32upx;
-          font-weight: 700;
-          color: #333;
-        }
-        & > .accumulative {
-          font-size: 26upx;
-          color: #999;
-        }
-      }
-      & > .store_btn {
-        position: absolute;
-        right: 30upx;
-        // padding-right: 30upx;
-        & > .btn_entrance {
-          display: inline-block;
-          font-size: 26upx;
-          color: #3385ff;
-          border: 1px solid #3385ff;
-          border-radius: 8upx;
-          padding: 15upx 30upx;
-          margin-left: 30upx;
-        }
-        & > .btn_forbid {
-          border: 1px solid #999;
-          color: #999;
-        }
-      }
-    }
-  }
-  .pay_list {
-    padding-top:20upx;
-    padding-bottom: 100upx;
-    background-color: #f0f2f6;
-  }
-}
-</style>