Ver código fonte

perf(merchant): 移动店铺相应页面

yizhiyang 11 meses atrás
pai
commit
d16c942327

+ 95 - 0
src/pageMerchant/storeModule/appointList.vue

@@ -0,0 +1,95 @@
+<template>
+  <view class="appointList">
+    <view v-for="item in appointList" :key="item.id" class="appoint">
+      <view class="fl-flex fl-justify-between">
+        <view>
+          {{ item.mobile }}
+          <text class="f-s-22" style="color: #999999"> (预留手机) </text>
+        </view>
+        <u-icon name="phone" color="#2979ff" size="24" @click="handlerMakePhone(item.mobile)" />
+      </view>
+      <view class="line"></view>
+      <view class="fl-flex fl-align-center">
+        <image
+          :src="item.simpleMerchantVO.logo"
+          mode="scaleToFill"
+          style="width: 200rpx; height: 200rpx"
+          v-if="item.simpleMerchantVO.logo"
+        />
+        <image
+          src="/static/QR57a.jpg"
+          v-else
+          mode="scaleToFill"
+          style="width: 200rpx; height: 200rpx"
+        />
+
+        <view class="u-p-l-10">
+          <view class="f-s-32" style="font-weight: bold">服务名称服务</view>
+          <view style="margin: 10rpx 0">{{ $u.timeFormat(item.appointTime) || '--' }}</view>
+          <view>{{ item.simpleMerchantVO.address || '--' }}</view>
+        </view>
+      </view>
+    </view>
+  </view>
+</template>
+
+<script>
+import { getAppointListApi } from '@/api/merchant/order';
+export default {
+  data() {
+    return {
+      params: {
+        offset: 1,
+        size: 10,
+      },
+      appointList: [],
+      list: {},
+    };
+  },
+  onShow() {
+    let { merchant } = this.$store.state.data.merchantInfo;
+    this.list = merchant;
+
+    setTimeout(() => {
+      this.getAppointList();
+    }, 300);
+  },
+
+  methods: {
+    async getAppointList() {
+      let result = Object.assign({}, { ...this.params }, { merchantId: this.list.id });
+      console.log(result, '0000000');
+      let res = await getAppointListApi({ ...result });
+
+      if (res.code === 'OK') {
+        this.appointList = res.data;
+      }
+    },
+
+    handlerMakePhone() {
+      uni.makePhoneCall({
+        phoneNumber: '114', //仅为示例
+      });
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.appointList {
+  .appoint {
+    margin: 0 20rpx;
+    padding: 20rpx;
+    background-color: #fff;
+    margin-bottom: 20rpx;
+    border-radius: 20rpx;
+
+    .line {
+      height: 2rpx;
+      width: 100%;
+      background-color: #eee;
+      margin: 5rpx 0;
+    }
+  }
+}
+</style>

+ 133 - 0
src/pageMerchant/storeModule/components/evaluateItem.vue

@@ -0,0 +1,133 @@
+<template>
+  <view class="">
+    <view class="item" :key="index" v-for="(item, index) of 3">
+      <view class="item-top">
+        <view class="top-l">
+          <img class="img" src="@/static/QR57a.jpg" alt="" />
+          <view class="l-text">
+            <p class="l-name">匿名用户</p>
+            <p class="l-time">2023-11-05</p>
+          </view>
+        </view>
+        <view class="top-r">
+          <p class="r-text">更多</p>
+          <u-icon name="arrow-right" color="#9B9B9B" size="18"></u-icon>
+        </view>
+      </view>
+
+      <view class="rate-box">
+        <span class="rate-text">评分:</span>
+        <u-rate :count="count" v-model="value"></u-rate>
+      </view>
+
+      <view class="content-box">
+        <p class="content-text">
+          服务非常好服务非常好服务非常好服务非常好服务非常好服务非常好服务非常好
+        </p>
+        <view class="content-img-box">
+          <img class="content-img" src="@/static/QR57a.jpg" v-for="itm of 6" />
+        </view>
+      </view>
+
+      <view class="btn-box">
+        <view class="btn" @click="handlerSkipBack">回复</view>
+      </view>
+    </view>
+  </view>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      count: 5,
+      value: 2,
+    };
+  },
+  methods: {
+    // 点击跳转到回复
+    handlerSkipBack() {
+      uni.navigateTo({
+        url: '/pages/tabbar/store/evaluateBack',
+      });
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.item {
+  background-color: #fff;
+  padding: 20rpx;
+  margin: 10rpx 0;
+  .item-top {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    .top-l {
+      display: flex;
+      align-items: center;
+      .img {
+        width: 120rpx;
+        height: 120rpx;
+        border-radius: 50%;
+      }
+      .l-text {
+        .l-name {
+          font-size: 28rpx;
+          color: #777777;
+        }
+        .l-time {
+          font-size: 24rpx;
+          color: #777777;
+        }
+      }
+    }
+    .top-r {
+      display: flex;
+      .r-text {
+        font-size: 26rpx;
+        color: #777777;
+      }
+    }
+  }
+
+  .rate-box {
+    display: flex;
+    font-size: 28rpx;
+    color: #777777;
+    margin: 20rpx;
+    .rate-text {
+      margin-right: 10rpx;
+    }
+  }
+
+  .content-box {
+    .content-text {
+    }
+    .content-img-box {
+      display: grid;
+      grid-template-columns: 22% 22% 22% 22%;
+      justify-content: space-around;
+      .content-img {
+        width: 180rpx;
+        height: 180rpx;
+      }
+    }
+  }
+  .btn-box {
+    display: flex;
+    justify-content: flex-end;
+    .btn {
+      background-color: #fff;
+      border: 2rpx solid #f56c6c;
+      color: #f56c6c;
+      text-align: center;
+      width: 120rpx;
+      font-size: 26rpx;
+      padding: 10rpx 0;
+      border-radius: 20rpx;
+    }
+  }
+}
+</style>

+ 87 - 0
src/pageMerchant/storeModule/couponManage.vue

@@ -0,0 +1,87 @@
+<template>
+  <view class="couponManage">
+    <view class="coupon" v-for="(item, index) in initList" :key="index">
+      <view class="item-left">
+        <view class="f-s-38 name">{{ item.name }}</view>
+        <view class="f-s-28 text-666">到期时间:{{ $u.timeFormat(item.expiration) }}</view>
+      </view>
+      <view class="item-right">
+        <view class="fl-flex fl-justify-center">
+          <view class="f-s-40">{{ item.discount }}</view>
+          <text class="f-s-28 u-m-t-10">折</text>
+        </view>
+        <view class="text-cut-2 u-m-t-10">
+          {{ item.description }}
+        </view>
+      </view>
+    </view>
+  </view>
+</template>
+
+<script>
+import { getMerchantCoupon } from '@/api/merchant/store.js';
+export default {
+  data() {
+    return {
+      list: {},
+      params: {
+        pageNum: 1,
+        pageSize: 10,
+      },
+      initList: [],
+    };
+  },
+  created() {
+    this.list = this.$store.state.data.merchantInfo;
+  },
+  mounted() {
+    this.getDataListInit();
+  },
+  methods: {
+    getDataListInit() {
+      let result = Object.assign(
+        {},
+        {
+          paging: `${this.params.pageNum},${this.params.pageSize}`,
+        },
+      );
+      getMerchantCoupon(this.list.merchant.id, { ...result }).then(res => {
+        console.log();
+
+        if (res.code === 'OK') {
+          this.initList = res.data.records;
+        }
+      });
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.couponManage {
+  min-height: 100vh;
+  padding: 20rpx 40rpx;
+  .coupon {
+    border-radius: 10rpx;
+    background-color: #fff;
+    margin-bottom: 20rpx;
+    display: flex;
+    .name {
+      color: #333;
+      margin-bottom: 16rpx;
+    }
+    .item-left {
+      padding: 35rpx;
+      width: 60%;
+    }
+    .item-right {
+      padding: 35rpx;
+      color: #fff;
+      width: 40%;
+      text-align: center;
+      border-radius: 0 10rpx 10rpx 0;
+      background-color: #347caf;
+    }
+  }
+}
+</style>

+ 97 - 0
src/pageMerchant/storeModule/evaluateBack.vue

@@ -0,0 +1,97 @@
+<template>
+  <view class="container">
+    <view class="top-box">
+      <u--textarea v-model="value1" placeholder="请输入内容" count></u--textarea>
+    </view>
+
+    <view class="bottom-box">
+      <view class="text-item">
+        <view class="item-l">
+          <span >默认回复</span>
+          <span class='l-text'>(点击文本使用)</span>
+        </view>
+        <view class="item-r" @click="handlerEdit">
+           {{ editType ? '编辑' : '保存' }}
+        </view>
+      </view>
+      <u--textarea :disabled='editType' v-model="value2" placeholder="请输入内容" ></u--textarea>
+    </view>
+
+    <button class="btn" @click="handlerSubmitBtn">提交</button>
+  </view>
+</template>
+
+<script>
+  export default{
+    data(){
+      return{
+        value1:'1111111111',
+        value2:'亲爱的顾客,感谢您认可我们的服务,我们会努力做得更好,祝您生活愉快',
+        editType:true
+      }
+    },
+    methods:{
+      // 点击编辑按钮
+      handlerEdit(){
+        this.editType = !this.editType
+      },
+      // 点击提交按钮
+      handlerSubmitBtn(){
+        uni.showToast({
+          title:'提交成功',
+          icon:'none'
+        })
+        setTimeout(()=>{
+          uni.navigateBack(-1)
+        },1500)
+      }
+    }
+  }
+</script>
+
+<style lang="scss" scoped>
+  .container{
+    background-color: #F7F7F7 !important;
+    min-height: 100vh;
+    .top-box,.bottom-box{
+      background-color: #fff;
+      padding: 20rpx;
+      margin: 20rpx;
+    }
+    .bottom-box{
+      .text-item{
+        display:flex;
+        justify-content: space-between;
+        margin-bottom: 20rpx;
+        .item-l{
+          font-size: 28rpx;
+          color: #000;
+          .l-text{
+            font-size: 26rpx;
+            color: #CCCFD5;
+            margin-left: 10rpx;
+          }
+        }
+        .item-r{
+          color: #1C76D2;
+          font-size: 28rpx
+        }
+      }
+    }
+    .btn {
+      background-color: #5992BB !important;
+      color: #fff;
+      font-size: 32rpx;
+      border-radius: 40rpx;
+      margin-top: 40rpx;
+      width: 95%;
+    }
+  }
+
+  ::v-deep view.data-v-81cd9d32, scroll-view.data-v-81cd9d32, swiper-item.data-v-81cd9d32 {
+    background-color: #F7F7F7 !important;
+  }
+  ::v-deep .u-textarea__count.data-v-81cd9d32{
+    background-color: #F7F7F7 !important;
+  }
+</style>

+ 209 - 0
src/pageMerchant/storeModule/evaluateManagement.vue

@@ -0,0 +1,209 @@
+<template>
+  <view class="container">
+    <view class="top-box">
+      <view class="top-l">
+        <view class="l-l"> {{ value.toFixed(1) }} </view>
+        <view class="l-r">
+          <u-rate :count="count" v-model="value"></u-rate>
+          <p>根据近90天评价计其所得</p>
+        </view>
+      </view>
+      <view class="top-r">
+        <span>更多</span>
+        <u-icon name="arrow-right" color="#9B9B9B" size="18"></u-icon>
+      </view>
+    </view>
+
+    <view class="content-box">
+      <view class="top-box">
+        <u-tabs
+          :list="list1"
+          lineWidth="30"
+          lineColor="$uni-bg-color-primary"
+          :activeStyle="{
+            color: '#000',
+            fontSize: '28rpx',
+            transform: 'scale(1.05)',
+            marginBottom: '15rpx',
+          }"
+          :inactiveStyle="{
+            color: '#333',
+            fontSize: '30rpx',
+            transform: 'scale(1)',
+            marginBottom: '15rpx',
+          }"
+        ></u-tabs>
+      </view>
+      <view class="item-box">
+        <view
+          class="item"
+          :class="current == index ? 'act-item' : ''"
+          v-for="(item, index) of contentList"
+          :key="index"
+          @click="handlerSelectItem(item, index)"
+          >{{ item.name }}{{ item.numb }}</view
+        >
+      </view>
+      <view class="item-radio-box">
+        <u-radio-group v-model="radiovalue1" placement="row">
+          <u-radio
+            :customStyle="{ margin: '8px' }"
+            v-for="(item, index) in radiolist1"
+            :key="index"
+            :label="item.name"
+            :name="item.name"
+          >
+          </u-radio>
+        </u-radio-group>
+      </view>
+    </view>
+
+    <evaluateItem></evaluateItem>
+  </view>
+</template>
+
+<script>
+import evaluateItem from './components/evaluateItem.vue';
+import { getEvaluateListApi } from '@/api/merchant/evaluate';
+export default {
+  data() {
+    return {
+      current: 0,
+      count: 5,
+      value: 2,
+      list1: [
+        {
+          name: '未回复的评价',
+        },
+        {
+          name: '全部评价',
+        },
+      ],
+      contentList: [
+        {
+          name: '全部',
+          numb: 360,
+        },
+        {
+          name: '五星',
+          numb: 21,
+        },
+        {
+          name: '四星',
+          numb: 50,
+        },
+        {
+          name: '三星',
+          numb: 88,
+        },
+        {
+          name: '二星',
+          numb: 72,
+        },
+        {
+          name: '一星',
+          numb: 218,
+        },
+      ],
+      radiolist1: [
+        {
+          name: '有内容的评价',
+          disabled: false,
+        },
+        {
+          name: '有图片的评价',
+          disabled: false,
+        },
+      ],
+      // u-radio-group的v-model绑定的值如果设置为某个radio的name,就会被默认选中
+      radiovalue1: '有内容的评价',
+    };
+  },
+  components: { evaluateItem },
+  methods: {
+    // 选择星级
+    handlerSelectItem(item, index) {
+      this.current = index;
+    },
+    click() {},
+    async getEvaluateList() {
+      let res = await getEvaluateListApi();
+
+      console.log(res, '@@@res');
+    },
+  },
+  mounted() {
+    this.getEvaluateList();
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.container {
+  background-color: #f5f5f5 !important;
+  min-height: calc(100vh - 20rpx);
+  padding-bottom: 20rpx;
+  .top-box {
+    background-color: #fff;
+    padding: 20rpx 40rpx;
+    display: flex;
+    justify-content: space-between;
+
+    .top-l {
+      display: flex;
+      align-items: center;
+
+      .l-l {
+        margin-right: 20rpx;
+        font-size: 42rpx;
+        color: #d32625;
+        font-weight: bold;
+      }
+
+      .l-r {
+        p {
+          margin-top: 20rpx;
+          font-size: 24rpx;
+          color: #afafaf;
+        }
+      }
+    }
+
+    .top-r {
+      display: flex;
+      align-items: center;
+      color: #afafaf;
+      font-size: 26rpx;
+    }
+  }
+
+  .content-box {
+    padding: 0 20rpx 20rpx;
+    background-color: #fff;
+    margin: 10rpx 0;
+
+    .item-box {
+      display: grid;
+      grid-template-columns: 32% 32% 32%;
+      justify-content: space-between;
+
+      .item,
+      .act-item {
+        border: 2rpx solid #e0e0e0;
+        padding: 10rpx 30rpx;
+        text-align: center;
+        margin: 20rpx;
+        font-size: 26rpx;
+        color: #999999;
+      }
+      .act-item {
+        border: 2rpx solid #87afcc !important;
+        color: #87afcc !important;
+      }
+    }
+
+    .item-radio-box {
+    }
+  }
+}
+</style>

+ 122 - 0
src/pageMerchant/storeModule/myTeam.vue

@@ -0,0 +1,122 @@
+<template>
+  <view class="container">
+    <view class="top-img-box">
+      <img class="top-img" src="@/static/QR57a.jpg" alt="" />
+      <view class="top-name"> My Team </view>
+    </view>
+
+    <view class="group-item-box">
+      <view class="item-top">
+        <view class="top-l">团队成员</view>
+        <view class="top-r">
+          <u-icon name="arrow-right" color="#C0C0C0" size="16"></u-icon>
+        </view>
+      </view>
+      <view class="item-content">
+        <img
+          class="item-img"
+          :key="item"
+          src="@/static/QR57a.jpg"
+          alt=""
+          v-for="item of 3"
+        />
+      </view>
+    </view>
+
+    <view class="group-item-box">
+      <view class="item-top">
+        <view class="top-l">最近动态</view>
+        <view class="top-r">
+          <u-icon name="arrow-right" color="#C0C0C0" size="16"></u-icon>
+        </view>
+      </view>
+      <view class="item-content dynamic-img-box">
+        <img class="dynamic-img" src="@/static/QR57a.jpg" alt="" />
+      </view>
+    </view>
+
+    <view class="group-item-box">
+      <view class="item-top">
+        <view class="top-l">团队任务</view>
+        <view class="top-r">
+          <u-icon name="arrow-right" color="#C0C0C0" size="16"></u-icon>
+        </view>
+      </view>
+      <view class="item-content">
+        <img
+          class="item-img"
+          src="@/static/QR57a.jpg"
+          alt=""
+          :key="item"
+          v-for="item of 3"
+        />
+      </view>
+    </view>
+  </view>
+</template>
+
+<script>
+export default {
+  data() {
+    return {};
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.container {
+  padding: 20rpx 10rpx 50rpx;
+
+  .top-img-box {
+    text-align: center;
+
+    .top-img {
+      width: 160rpx;
+      height: 160rpx;
+      border-radius: 100rpx;
+    }
+
+    .top-name {
+      color: #6b7280;
+      font-weight: bold;
+      font-size: 32rpx;
+      margin-top: 20rpx;
+    }
+  }
+
+  .group-item-box {
+    padding: 0 20rpx;
+    margin-top: 60rpx;
+
+    .item-top {
+      display: flex;
+      justify-content: space-between;
+
+      .top-l,
+      .top-r {
+        color: #6b7280;
+        font-weight: bold;
+        font-size: 32rpx;
+        margin-top: 20rpx;
+      }
+    }
+
+    .item-content {
+      display: flex;
+
+      .item-img {
+        width: 160rpx;
+        height: 160rpx;
+        border-radius: 100rpx;
+        margin: 60rpx 20rpx 0 0;
+      }
+
+      .dynamic-img {
+        width: 100%;
+        height: 500rpx;
+        margin-top: 60rpx;
+      }
+    }
+  }
+}
+</style>

+ 667 - 0
src/pageMerchant/storeModule/shopManage.vue

@@ -0,0 +1,667 @@
+<template>
+  <view class="u-wrap">
+    <view class="top-box">
+      <view class="switch-box">
+        <u-tabs
+          :list="list1"
+          lineWidth="30"
+          lineColor="$uni-bg-color-primary"
+          @click="handlerChangeTab"
+          :activeStyle="{
+            color: '#000',
+            fontSize: '28rpx',
+            transform: 'scale(1.05)',
+            marginBottom: '15rpx',
+          }"
+          :inactiveStyle="{
+            color: '#333',
+            fontSize: '30rpx',
+            transform: 'scale(1)',
+            marginBottom: '15rpx',
+          }"
+          itemStyle="width:50%;padding:0;margin:5px 0;"
+        ></u-tabs>
+      </view>
+      <view class="search-box">
+        <u--input
+          v-model="search"
+          prefixIcon="search"
+          prefixIconStyle="font-size: 22px;color: #909399"
+          class="search-ipt"
+          placeholder="请输入内容"
+          border="surround"
+          clearable
+        ></u--input>
+        <button class="btn" @click="handlerSearchBtn">搜索</button>
+      </view>
+    </view>
+
+    <!-- 在售中 -->
+    <view class="u-menu-wrap" v-if="delete_type == 0">
+      <scroll-view
+        scroll-y
+        scroll-with-animation
+        class="u-tab-view menu-scroll-view"
+        :scroll-top="scrollTop"
+        :scroll-into-view="itemId"
+      >
+        <view
+          v-for="(item, index) in tabbar"
+          :key="index"
+          class="u-tab-item"
+          :class="[current == index ? 'u-tab-item-active' : '']"
+          @tap.stop="swichMenu(index)"
+        >
+          <text class="u-line-1">{{ item.name }}</text>
+        </view>
+      </scroll-view>
+      <scroll-view
+        :scroll-top="scrollRightTop"
+        scroll-y
+        scroll-with-animation
+        class="right-box"
+        @scroll="rightScroll"
+      >
+        <view class="page-view">
+          <view
+            class="class-item"
+            :id="'item' + index"
+            v-for="(item, index) in tabbar"
+            :key="index"
+          >
+            <view class="item-title">
+              <text>{{ item.name }}</text>
+            </view>
+            <view class="item-box" v-for="itm of item.foods" :key="idx">
+              <view class="item-l">
+                <img class="l-img" src="@/static/QR57a.jpg" alt="" />
+              </view>
+              <view class="item-r">
+                <p class="p1">yizhiyang的鲜花{{ itm.name }}11111111111111</p>
+                <p class="p2">月售100</p>
+                <p class="p2">库存90</p>
+                <p class="p3">¥100起</p>
+              </view>
+            </view>
+          </view>
+        </view>
+      </scroll-view>
+    </view>
+
+    <!-- 已下架 -->
+    <view class="u-menu-wrap" v-if="delete_type == 1">
+      <scroll-view
+        :scroll-top="scrollRightTop"
+        scroll-y
+        scroll-with-animation
+        class="right-box"
+        @scroll="rightScroll"
+      >
+        <view class="page-view">
+          <view
+            class="class-item2"
+            :id="'item' + index"
+            v-for="(item, index) in tabbar"
+            :key="index"
+          >
+            <view class="item-box" v-for="itm of item.foods" :key="idx">
+              <u-checkbox-group>
+                <u-checkbox v-model="checked" shape="circle"></u-checkbox>
+              </u-checkbox-group>
+              <view class="item-l">
+                <img class="l-img" src="@/static/QR57a.jpg" alt="" />
+              </view>
+              <view class="item-r">
+                <p class="type_p1">yizhiyang的鲜花{{ itm.name }}11111111111111</p>
+                <p class="p2">月售100</p>
+                <p class="p2">库存90</p>
+                <p class="p3">¥100起</p>
+              </view>
+            </view>
+          </view>
+        </view>
+      </scroll-view>
+    </view>
+    <view class="bottom-box" v-if="delete_type == 1">
+      <p>批量上架</p>
+      <p>批量删除</p>
+    </view>
+  </view>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      scrollTop: 0, //tab标题的滚动条位置
+      oldScrollTop: 0, // tab标题的滚动条旧位置
+      current: 0, // 预设当前项的值
+      menuHeight: 0, // 左边菜单的高度
+      menuItemHeight: 0, // 左边菜单item的高度
+      itemId: '', // 栏目右边scroll-view用于滚动的id
+      arr: [], // 储存距离顶部高度的数组
+      scrollRightTop: 0, // 右边栏目scroll-view的滚动条高度
+      timer: null, // 定时器
+      tabbar: [
+        {
+          name: '蔬菜水果',
+          foods: [
+            {
+              cat: 383,
+              name: '蔬菜',
+              icon: 'http://nq348.com/uploads/category/20220315/1aeed6fa43b54cd68cce0c4883160f91.png',
+              key: '蔬菜',
+            },
+            {
+              cat: 384,
+              name: '食用菌',
+              icon: 'http://nq348.com/uploads/category/20220418/09839c618b35b510d50151f9a17793ee.png',
+              key: '食用菌',
+            },
+            {
+              cat: 385,
+              name: '水果',
+              icon: 'http://nq348.com/uploads/category/20220418/5294ad2fc7effc9629cbfdb8baf41773.png',
+              key: '水果',
+            },
+          ],
+        },
+        {
+          name: '畜禽养殖',
+          foods: [
+            {
+              cat: 388,
+              name: '禽类',
+              icon: 'http://nq348.com/uploads/category/20220418/da31895fc5a9aacf93fea6f27f08afd7.png',
+              key: '禽类',
+            },
+            {
+              cat: 389,
+              name: '畜类',
+              icon: 'http://nq348.com/uploads/category/20220418/6352081e3f3b36f9360a933676e9452c.png',
+              key: '畜类',
+            },
+            {
+              cat: 391,
+              name: '蛋类',
+              icon: 'http://nq348.com/uploads/category/20220418/d2e7ab4224679c0c796ba3ddd8a68e2f.png',
+              key: '蛋类',
+            },
+            {
+              cat: 390,
+              name: '水产',
+              icon: 'http://nq348.com/uploads/category/20220418/52a1f1baa7617ef4d4e1a4b344b2fce7.png',
+              key: '水产',
+            },
+          ],
+        },
+
+        {
+          name: '粮油副食',
+          foods: [
+            {
+              cat: 393,
+              name: '米面粮油',
+              icon: 'http://nq348.com/uploads/category/20220418/1bb32e319ecf5aa352b7fe26fc265004.png',
+              key: '米面粮油',
+            },
+            {
+              cat: 394,
+              name: '坚果干果',
+              icon: 'http://nq348.com/uploads/category/20220418/6ded13eae4a3b113b5225ca8b99bbfdd.png',
+              key: '坚果干果',
+            },
+            {
+              cat: 395,
+              name: '加工食品',
+              icon: 'http://nq348.com/uploads/category/20220418/1e1c10838799de5834aa77f0f9eb8f40.png',
+              key: '加工食品',
+            },
+            {
+              cat: 396,
+              name: '茶烟酒',
+              icon: 'http://nq348.com/uploads/category/20220418/c43cd994e49023c7efdf2b18b1bca30b.png',
+              key: '茶烟酒',
+            },
+          ],
+        },
+        {
+          name: '花卉苗木',
+          foods: [
+            {
+              cat: 398,
+              name: '鲜花盆景',
+              icon: 'http://nq348.com/uploads/category/20220418/b21c44045daaa8b8d148981ba9efc2e0.png',
+              key: '鲜花盆景',
+            },
+            {
+              cat: 399,
+              name: '果树苗',
+              icon: 'http://nq348.com/uploads/category/20220418/63ee2b902ff0f4d638d8a5ad770f7641.png',
+              key: '果树苗',
+            },
+            {
+              cat: 400,
+              name: '蔬瓜种子',
+              icon: 'http://nq348.com/uploads/category/20220418/2df521877616ee44fd01aae0434a5815.png',
+              key: '蔬瓜种子',
+            },
+            {
+              cat: 401,
+              name: '经济作物',
+              icon: 'http://nq348.com/uploads/category/20220418/f85be72a98694befd889f30de45a1d64.png',
+              key: '经济作物',
+            },
+          ],
+        },
+        {
+          name: '中草药材',
+          foods: [
+            {
+              cat: 403,
+              name: '全草类',
+              icon: 'http://nq348.com/uploads/category/20220418/01812c1a83f5db7eafbf3bdae927f134.png',
+              key: '全草类',
+            },
+            {
+              cat: 405,
+              name: '根茎皮叶花',
+              icon: 'http://nq348.com/uploads/category/20220418/dca8dcc814401474d4f19ae7394cc209.png',
+              key: '根茎皮叶花',
+            },
+            {
+              cat: 406,
+              name: '滋补品类',
+              icon: 'http://nq348.com/uploads/category/20220418/33b965295811fdd6f5e672e9a3ce34a2.png',
+              key: '滋补品类',
+            },
+            {
+              cat: 404,
+              name: '果实籽仁类',
+              icon: 'http://nq348.com/uploads/category/20220418/1dc8c46c66b4625d458a7f45787ecef9.png',
+              key: '果实籽仁类',
+            },
+          ],
+        },
+        {
+          name: '其他',
+          foods: [
+            {
+              cat: 434,
+              name: '包装',
+              icon: 'http://nq348.com/uploads/category/20220418/ebdfd326333344825adbe81dbd89e2c9.png',
+              key: '包装',
+            },
+            {
+              cat: 435,
+              name: '安全溯源',
+              icon: 'http://nq348.com/uploads/category/20220418/03230c63f066f46005abf5f576df0ed1.png',
+              key: '安全溯源',
+            },
+            {
+              cat: 436,
+              name: '农用百货',
+              icon: 'http://nq348.com/uploads/category/20220418/93393f2df3264faba86bb449a0c10a79.png',
+              key: '农用百货',
+            },
+            {
+              cat: 437,
+              name: '仓储物流',
+              icon: 'http://nq348.com/uploads/category/20220418/f553505ebabbcb1bf762b288716cf1e7.png',
+              key: '仓储物流',
+            },
+          ],
+        },
+      ],
+      list1: [
+        {
+          name: '在售中',
+        },
+        {
+          name: '已下架',
+        },
+      ],
+      checked: false,
+      search: '',
+      delete_type: false,
+    };
+  },
+  /**
+   * 获取一个目标元素的高度
+   * @elClass 元素的类名
+   * @dataVal 储存高度的对象
+   */
+  onReady() {
+    this.getMenuItemTop();
+  },
+  watch: {
+    delete_type(newValue) {
+      this.scrollRightTop = 0;
+      this.current = 0;
+    },
+  },
+  methods: {
+    getElRect(elClass, dataVal) {
+      new Promise((resolve, reject) => {
+        const query = uni.createSelectorQuery().in(this);
+        query
+          .select('.' + elClass)
+          .fields(
+            {
+              size: true,
+            },
+            res => {
+              // 如果节点尚未生成,res值为null,循环调用执行
+              if (!res) {
+                setTimeout(() => {
+                  this.getElRect(elClass);
+                }, 10);
+                return;
+              }
+              this[dataVal] = res.height;
+              resolve();
+            },
+          )
+          .exec();
+      });
+    },
+
+    getMenuItemTop() {
+      new Promise(resolve => {
+        let selectorQuery = uni.createSelectorQuery();
+        selectorQuery
+          .selectAll('.class-item')
+          .boundingClientRect(rects => {
+            // 如果节点尚未生成,rects值为[](因为用selectAll,所以返回的是数组),循环调用执行
+            if (!rects.length) {
+              setTimeout(() => {
+                this.getMenuItemTop();
+              }, 10);
+              return;
+            }
+            rects.forEach(rect => {
+              // 视情况而定,这里减去rects[0].top,是因为第一项顶部可能不是贴到导航栏(比如有个搜索框的情况)
+              this.arr.push(rect.top - rects[0].top);
+              // this.arr.push(rect.top)
+              resolve();
+            });
+          })
+          .exec();
+      });
+    },
+    /**
+     * 观测元素相交状态
+     * 检测右边scroll-view的id为itemxx的元素与right-box的相交状态
+     * 如果跟.right-box底部相交,就动态设置左边栏目的活动状态
+     */
+    async observer() {
+      this.tabbar.map((val, index) => {
+        let observer = uni.createIntersectionObserver(this);
+        observer
+          .relativeTo('.right-box', {
+            top: 0,
+          })
+          .observe('#item' + index, res => {
+            if (res.intersectionRatio > 0) {
+              let id = res.id.substring(4);
+              this.leftMenuStatus(id);
+            }
+          });
+      });
+    },
+    /**
+     * 设置左边菜单的滚动状态
+     * @index 传入的 ID
+     */
+    async leftMenuStatus(index) {
+      this.current = index;
+      // 如果为0,意味着尚未初始化
+      if (this.menuHeight == 0 || this.menuItemHeight == 0) {
+        await this.getElRect('menu-scroll-view', 'menuHeight');
+        await this.getElRect('u-tab-item', 'menuItemHeight');
+      }
+      // 将菜单活动item垂直居中
+      this.scrollTop = index * this.menuItemHeight + this.menuItemHeight / 2 - this.menuHeight / 2;
+    },
+    /**
+     * 点击左边的栏目切换
+     * @index 传入的 ID
+     */
+    async swichMenu(index) {
+      if (this.arr.length == 0) {
+        await this.getMenuItemTop();
+      }
+      if (index == this.current) return;
+      this.scrollRightTop = this.oldScrollTop;
+      this.$nextTick(function () {
+        this.scrollRightTop = this.arr[index];
+        this.current = index;
+        this.leftMenuStatus(index);
+      });
+    },
+    /**
+     * 右边菜单滚动
+     * 如果不存在height2,意味着数据循环已经到了最后一个,设置左边菜单为最后一项即可
+     */
+    async rightScroll(e) {
+      this.oldScrollTop = e.detail.scrollTop;
+      if (this.arr.length == 0) {
+        await this.getMenuItemTop();
+      }
+      if (this.timer) return;
+      if (!this.menuHeight) {
+        await this.getElRect('menu-scroll-view', 'menuHeight');
+      }
+      setTimeout(() => {
+        // 节流
+        this.timer = null;
+        // scrollHeight为右边菜单垂直中点位置
+        // let scrollHeight = e.detail.scrollTop + this.menuHeight / 2;
+        // scrollHeight为右边菜单头部位置
+        let scrollHeight = e.detail.scrollTop + 20;
+        for (let i = 0; i < this.arr.length; i++) {
+          let height1 = this.arr[i];
+          let height2 = this.arr[i + 1];
+          if (!height2 || (scrollHeight >= height1 && scrollHeight < height2)) {
+            this.leftMenuStatus(i);
+            return;
+          }
+        }
+      }, 10);
+    },
+
+    // 搜索按钮
+    handlerSearchBtn() {
+      console.log('search', this.search);
+    },
+    // 切换tab
+    handlerChangeTab(e) {
+      if (e.index == 1) {
+        this.delete_type = true;
+      } else {
+        this.delete_type = false;
+      }
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.top-box {
+  padding: 0 0 20rpx;
+  width: 100%;
+
+  .switch-box {
+    width: 100%;
+  }
+
+  .search-box {
+    display: flex;
+    justify-content: space-around;
+    width: 90%;
+    margin: 20rpx auto 0;
+
+    .btn {
+      width: 160rpx;
+      height: 70rpx;
+      background-color: #5992bb;
+      color: #fff;
+      text-align: center;
+      line-height: 70rpx;
+      font-size: 26rpx;
+      border-radius: 30rpx;
+      margin-left: 20rpx;
+    }
+  }
+}
+
+.u-wrap {
+  /* #ifdef H5 */
+  height: calc(100vh - var(--window-top));
+  /* #endif */
+  display: flex;
+  flex-direction: column;
+  height: 100vh;
+}
+
+.u-search-box {
+  padding: 18rpx 30rpx;
+}
+
+.u-menu-wrap {
+  flex: 1;
+  display: flex;
+  overflow: hidden;
+}
+
+.u-tab-view {
+  width: 200rpx;
+  background-color: #f6f6f6;
+}
+
+.u-tab-item {
+  height: 110rpx;
+  background: #f6f6f6;
+  box-sizing: border-box;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  font-size: 26rpx;
+  color: #444;
+  font-weight: 400;
+  line-height: 1;
+  padding: 16rpx 0;
+}
+
+.u-tab-item-active {
+  position: relative;
+  color: #5f96be;
+  font-size: 30rpx;
+  font-weight: 500;
+  background: #fff;
+}
+
+.u-tab-item-active::before {
+  content: '';
+  position: absolute;
+  border-left: 4px solid #5f96be;
+  height: 52rpx;
+  left: 0;
+  top: 29rpx;
+}
+
+.u-tab-view {
+  height: 100%;
+}
+
+.right-box {
+  background-color: rgb(250, 250, 250);
+}
+
+.page-view {
+  padding: 16rpx;
+}
+
+.class-item,
+.class-item2 {
+  margin-bottom: 30rpx;
+  background-color: #fff;
+  padding: 16rpx;
+  border-radius: 8rpx;
+}
+
+.class-item2 {
+  margin-bottom: 0;
+}
+
+.item-title {
+  font-size: 26rpx;
+  text-align: center;
+  color: #5f96be;
+  margin-bottom: 20rpx;
+}
+
+.item-box {
+  display: flex;
+  margin-bottom: 10rpx;
+
+  .item-l {
+    border: 2rpx solid #eef0f0;
+    border-radius: 20rpx;
+    margin-right: 20rpx;
+
+    .l-img {
+      width: 140rpx;
+      height: 130rpx;
+      border-radius: 20rpx;
+    }
+  }
+
+  .item-r {
+    .p1,
+    .type_p1 {
+      width: 350rpx;
+      font-size: 28rpx;
+      color: #000;
+      margin-bottom: 5rpx;
+      overflow-x: hidden;
+      text-overflow: ellipsis;
+      white-space: nowrap;
+    }
+
+    .type_p1 {
+      width: 480rpx;
+    }
+
+    .p2 {
+      font-size: 24rpx;
+      color: #a4a5ad;
+    }
+
+    .p3 {
+      font-size: 26rpx;
+      color: #d6534d;
+    }
+  }
+}
+
+.bottom-box {
+  width: 100%;
+  background-color: #fff;
+  padding: 10rpx 20rpx;
+  height: 100rpx;
+  border-top: 2rpx solid #f7f7f7;
+  box-shadow: 0px 7px 10px 7px rgba(0, 0, 0, 0.1);
+  display: flex;
+  justify-content: space-around;
+  line-height: 100rpx;
+  font-size: 28rpx;
+}
+
+::v-deep .u-input--radius.data-v-fdbb9fe6,
+.u-input--square.data-v-fdbb9fe6 {
+  background-color: #f7f7f7 !important;
+  padding: 40rpx;
+  border-radius: 50rpx;
+}
+</style>

+ 189 - 162
src/pageMerchant/tabbar/store.vue

@@ -25,7 +25,11 @@
 
     <view class="shop__tools">
       <u-grid :border="false" col="5">
-        <u-grid-item v-for="(listItem, listIndex) in list" :key="listIndex" @click="handlerSkip(listItem, listIndex)">
+        <u-grid-item
+          v-for="(listItem, listIndex) in list"
+          :key="listIndex"
+          @click="handlerSkip(listItem, listIndex)"
+        >
           <image src="@/static/tools.jpg" />
           <text class="grid-text">{{ listItem.title }}</text>
         </u-grid-item>
@@ -39,18 +43,25 @@
     </view>
 
     <view>
-      <u-tabs :list="list1" lineWidth="40" lineColor="$uni-bg-color-primary" :activeStyle="{
+      <u-tabs
+        :list="list1"
+        lineWidth="40"
+        lineColor="$uni-bg-color-primary"
+        :activeStyle="{
           color: '#000',
           fontWeight: 'bold',
           fontSize: '32rpx',
           transform: 'scale(1.05)',
           marginBottom: '15rpx',
-        }" :inactiveStyle="{
+        }"
+        :inactiveStyle="{
           color: '#333',
           fontSize: '30rpx',
           transform: 'scale(1)',
           marginBottom: '15rpx',
-        }" itemStyle="padding-left: 15px; padding-right: 15px; height: 34px;"></u-tabs>
+        }"
+        itemStyle="padding-left: 15px; padding-right: 15px; height: 34px;"
+      ></u-tabs>
 
       <view style="background-color: #fff; height: 400rpx; margin-top: 20rpx"> 1111111111 </view>
     </view>
@@ -59,182 +70,198 @@
 </template>
 
 <script>
-  import {
-    getOrderQuantityApi
-  } from '@/api/merchant/order';
-  export default {
-    data() {
-      return {
-        text1: 'uView UI众多组件覆盖开发过程的各个需求,组件功能丰富,多端兼容。让您快速集成,开箱即用',
-
-        list1: [{
-            name: '商家社区',
-          },
-          {
-            name: '活动中心',
-          },
-          {
-            name: '商品优惠',
-          },
-        ],
-
-        list: [{
-            title: '店铺管理',
-          },
-          {
-            title: '顾客评价',
-          },
-          {
-            title: '商品核销',
-          },
-          {
-            title: '商品优惠',
-          },
-          {
-            title: '经营数据',
-          },
-          {
-            title: '我的团队',
-          },
-          {
-            title: '活动中心',
-          },
-          {
-            title: '当前佣金',
-          },
-          {
-            title: '商家社区',
-          },
-          {
-            title: '预约列表',
-          },
-        ],
-        listScore: {},
-        merchantId: '',
-      };
-    },
-    created() {
-      // 获取商家id
-      let merchantInfo = this.$store.state.data.merchantInfo;
-      this.merchantId = merchantInfo.merchant.id;
-    },
+import { getOrderQuantityApi } from '@/api/merchant/order';
+export default {
+  data() {
+    return {
+      text1:
+        'uView UI众多组件覆盖开发过程的各个需求,组件功能丰富,多端兼容。让您快速集成,开箱即用',
 
-    mounted() {
-      // 查商家端查询订单量以及今日收入
-      this.getOrderQuantity(this.merchantId);
-    },
+      list1: [
+        {
+          name: '商家社区',
+        },
+        {
+          name: '活动中心',
+        },
+        {
+          name: '商品优惠',
+        },
+      ],
 
-    methods: {
-      // 点击跳转
-      handlerSkip(item, index) {
-        console.log('index', index);
-        switch (index) {
-          case 0:
-            uni.navigateTo({
-              url: '/pages/merchant/store/shopManage',
-            });
-            break;
-          case 1:
-            uni.navigateTo({
-              url: '/pages/merchant/store/evaluateManagement',
-            });
-            break;
-          case 3:
-            uni.navigateTo({
-              url: '/pages/merchant/store/couponManage',
-            });
-            break;
-          case 5:
-            uni.navigateTo({
-              url: '/pages/merchant/store/myTeam',
-            });
-            break;
-          case 9:
-            uni.navigateTo({
-              url: '/pages/merchant/store/appointList',
-            });
-            break;
-        }
-      },
-      async getOrderQuantity(id) {
-        let res = await getOrderQuantityApi(id);
-        if (res.code === "OK") {
-          this.listScore = res.data
-        }
-      },
+      list: [
+        {
+          title: '店铺管理',
+        },
+        {
+          title: '顾客评价',
+        },
+        {
+          title: '商品核销',
+        },
+        {
+          title: '商品优惠',
+        },
+        {
+          title: '经营数据',
+        },
+        {
+          title: '我的团队',
+        },
+        {
+          title: '活动中心',
+        },
+        {
+          title: '当前佣金',
+        },
+        {
+          title: '商家社区',
+        },
+        {
+          title: '预约列表',
+        },
+      ],
+      listScore: {},
+      merchantId: '',
+    };
+  },
+  created() {
+    // 获取商家id
+    let merchantInfo = this.$store.state.data.merchantInfo;
+    this.merchantId = merchantInfo.merchant.id;
+  },
+
+  mounted() {
+    // 查商家端查询订单量以及今日收入
+    this.getOrderQuantity(this.merchantId);
+  },
+
+  methods: {
+    // 点击跳转
+    handlerSkip(item, index) {
+      console.log('index', index);
+      switch (index) {
+        case 0:
+          uni.navigateTo({
+            url: '/pageMerchant/storeModule/shopManage',
+          });
+          break;
+        case 1:
+          uni.navigateTo({
+            url: '/pageMerchant/storeModule/evaluateManagement',
+          });
+          break;
+        case 2:
+          this.$u.toast('该功能暂未开发,尽情期待!');
+          break;
+        case 3:
+          uni.navigateTo({
+            url: '/pageMerchant/storeModule/couponManage',
+          });
+          break;
+        case 4:
+          this.$u.toast('该功能暂未开发,尽情期待!');
+          break;
+        case 5:
+          uni.navigateTo({
+            url: '/pageMerchant/storeModule/myTeam',
+          });
+          break;
+        case 6:
+          this.$u.toast('该功能暂未开发,尽情期待!');
+          break;
+        case 7:
+          this.$u.toast('该功能暂未开发,尽情期待!');
+          break;
+        case 8:
+          this.$u.toast('该功能暂未开发,尽情期待!');
+          break;
+        case 9:
+          uni.navigateTo({
+            url: '/pageMerchant/storeModule/appointList',
+          });
+          break;
+      }
     },
-  };
+    async getOrderQuantity(id) {
+      let res = await getOrderQuantityApi(id);
+      if (res.code === 'OK') {
+        this.listScore = res.data;
+      }
+    },
+  },
+};
 </script>
 
 <style lang="scss" scoped>
-  .text-title {
-    font-size: 28rpx;
-    color: #333;
-    margin-bottom: 20rpx;
-  }
+.text-title {
+  font-size: 28rpx;
+  color: #333;
+  margin-bottom: 20rpx;
+}
 
-  .text-num {
-    font-size: 40rpx;
-    font-weight: bold;
-    color: $uni-bg-color-primary;
-  }
+.text-num {
+  font-size: 40rpx;
+  font-weight: bold;
+  color: $uni-bg-color-primary;
+}
 
-  .shop {
-    min-height: calc(100vh - 80rpx);
-    background-color: $uni-bg-color-page;
-    padding-top: 80rpx;
+.shop {
+  min-height: calc(100vh - 80rpx);
+  background-color: $uni-bg-color-page;
+  padding-top: 80rpx;
 
-    &__data {
-      display: flex;
-      text-align: center;
-
-      &--left {
-        flex: 1;
-        padding: 30rpx 20rpx;
-        background-color: $uni-bg-color;
-        margin-right: 20rpx;
-        border-radius: $uni-border-radius-base;
-      }
+  &__data {
+    display: flex;
+    text-align: center;
 
-      &--right {
-        flex: 3;
-        display: flex;
-        justify-content: space-around;
-        padding: 30rpx 20rpx;
-        background-color: $uni-bg-color;
-        border-radius: $uni-border-radius-base;
-
-        .line {
-          width: 2rpx;
-          height: 65%;
-          margin-top: 35rpx;
-          background-color: #f5f5f5;
-        }
-      }
-    }
-
-    &__note {
-      margin: 30rpx 0;
+    &--left {
+      flex: 1;
+      padding: 30rpx 20rpx;
+      background-color: $uni-bg-color;
+      margin-right: 20rpx;
+      border-radius: $uni-border-radius-base;
     }
 
-    /* 工具 */
-    &__tools {
-      padding: 20rpx 10rpx;
+    &--right {
+      flex: 3;
+      display: flex;
+      justify-content: space-around;
+      padding: 30rpx 20rpx;
       background-color: $uni-bg-color;
       border-radius: $uni-border-radius-base;
 
-      image {
-        width: 100rpx;
-        height: 100rpx;
-        display: block;
-        margin: 15rpx 0 25rpx 0;
+      .line {
+        width: 2rpx;
+        height: 65%;
+        margin-top: 35rpx;
+        background-color: #f5f5f5;
       }
     }
   }
 
-  ::v-deep .u-cell__title-text {
-    border: 0;
-    font-weight: bold;
-    font-size: 36rpx;
+  &__note {
+    margin: 30rpx 0;
   }
+
+  /* 工具 */
+  &__tools {
+    padding: 20rpx 10rpx;
+    background-color: $uni-bg-color;
+    border-radius: $uni-border-radius-base;
+
+    image {
+      width: 100rpx;
+      height: 100rpx;
+      display: block;
+      margin: 15rpx 0 25rpx 0;
+    }
+  }
+}
+
+::v-deep .u-cell__title-text {
+  border: 0;
+  font-weight: bold;
+  font-size: 36rpx;
+}
 </style>

+ 386 - 323
src/pages.json

@@ -1,357 +1,420 @@
 {
-	"easycom": {
-		"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
-	},
-	"pages": [
+  "easycom": {
+    "^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
+  },
+  "pages": [
     {
-    	"path": "pages/tabbar/home",
-    	"style": {
-    		"navigationBarTitleText": "",
-    		"navigationStyle": "custom"
-    	}
-    },{
-			"path": "pages/login/login",
-			"style": {
-				"navigationBarTitleText": "登录",
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/login/phoneLogin",
-			"style": {
-				"navigationBarTitleText": "账号登录"
-			}
-		},
-		{
-			"path": "pages/webview/index",
-			"style": {
-				"navigationBarTitleText": ""
-			}
-		},
-		{
-			"path": "pages/tabbar/community",
-			"style": {
-				"navigationBarTitleText": "",
-				"navigationStyle": "custom",
+      "path": "pages/tabbar/home",
+      "style": {
+        "navigationBarTitleText": "",
+        "navigationStyle": "custom"
+      }
+    },
+    {
+      "path": "pages/login/login",
+      "style": {
+        "navigationBarTitleText": "登录",
+        "navigationStyle": "custom"
+      }
+    },
+    {
+      "path": "pages/login/phoneLogin",
+      "style": {
+        "navigationBarTitleText": "账号登录"
+      }
+    },
+    {
+      "path": "pages/webview/index",
+      "style": {
+        "navigationBarTitleText": ""
+      }
+    },
+    {
+      "path": "pages/tabbar/community",
+      "style": {
+        "navigationBarTitleText": "",
+        "navigationStyle": "custom",
         "enablePullDownRefresh": true,
         "onReachBottomDistance": 50
-			}
-		},
-		{
-			"path": "pages/tabbar/message",
-			"style": {
-				"navigationBarTitleText": "",
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/tabbar/mine",
-			"style": {
-				"navigationBarTitleText": "",
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/tabbar/promotionCode",
-			"style": {
-				"navigationBarTitleText": "",
-				"navigationStyle": "custom"
-			}
-		}
-	],
-	"subPackages": [{
-			"root": "pagesHome",
-			"pages": [
-				{
-					"path": "homeSearch",
-					"style": {
-						"navigationBarTitleText": "商品搜索"
-					}
-				},{
-					"path": "home/popularRecommend",
-					"style": {
-						"navigationBarTitleText": "热门推荐"
-					}
-				}, {
-					"path": "home/nearbyBusiness",
-					"style": {
-						"navigationBarTitleText": "附近商家"
-					}
-				},
-				{
-					"path": "marketer/index",
-					"style": {
-						"navigationBarTitleText": "商家详情"
-					}
-				},
-				{
-					"path": "marketer/productDetail",
-					"style": {
-						"navigationBarTitleText": "商品详情"
-					}
-				},
-				{
-					"path": "marketer/settleOrder",
-					"style": {
-						"navigationBarTitleText": "结算订单"
-					}
-				},
-				{
-					"path": "marketer/settleStatus",
-					"style": {
-						"navigationBarTitleText": "结算状态"
-					}
-				},
-				{
-					"path": "category/index",
-					"style": {
-						"navigationBarTitleText": "商品类型"
-					}
-				},
-				{
-					"path": "category/categoryStoreList",
-					"style": {
-						"navigationBarTitleText": "商品列表"
-					}
-				}
-			]
-		},
-		{
-			"root": "pagesCustomer",
-			"pages": [{
-				"path": "communityPostReview",
-				"style": {
-					"navigationBarTitleText": "发布评论"
-				}
-			}]
-		},
-		{
-			"root": "pagesMessage",
-			"pages": [{
-				"path": "orderNotify",
-				"style": {
-					"navigationBarTitleText": "订单通知"
-				}
-			},{
-				"path": "commentNotify",
-				"style": {
-					"navigationBarTitleText": "评论通知"
-				}
-			},{
-				"path": "kudosNotify",
-				"style": {
-					"navigationBarTitleText": "点赞通知"
-				}
-			},{
-				"path": "benefitsNotify",
-				"style": {
-					"navigationBarTitleText": "优惠福利"
-				}
-			}]
-		},
-		{
-			"root": "PageMine",
-			"pages": [{
-				"path": "orderModules/index",
-				"style": {
-					"navigationBarTitleText": "我的订单"
-				}
-			},{
-				"path": "orderModules/orderDetail",
-				"style": {
-					"navigationBarTitleText": "订单详情"
-				}
-			},{
-				"path": "orderModules/orderComment",
-				"style": {
-					"navigationBarTitleText": "订单评价"
-				}
-			},{
-				"path": "favourite",
-				"style": {
-					"navigationBarTitleText": "收藏列表"
-				}
-			},
-      {
-      	"path": "shopCar",
-      	"style": {
-      		"navigationBarTitleText": "购物车"
-      	}
-      },
-      {
-      	"path": "coupon",
-      	"style": {
-      		"navigationBarTitleText": "优惠券列表"
-      	}
-      },{
-      	"path": "goodsReserve",
-      	"style": {
-      		"navigationBarTitleText": "商品预约"
-      	}
-      },
-      {
-      	"path": "myTeam",
-      	"style": {
-      		"navigationBarTitleText": "我的团队"
-      	}
-      },{
-      	"path": "serviceCenter/index",
-      	"style": {
-      		"navigationBarTitleText": "客服中心"
-      	}
-      },{
-      	"path": "serviceCenter/serviceDetail",
-      	"style": {
-      		"navigationBarTitleText": "问题详情"
-      	}
-      },{
-      	"path": "feedback",
-      	"style": {
-      		"navigationBarTitleText": "意见反馈"
-      	}
-      },{
-      	"path": "aboutUs",
-      	"style": {
-      		"navigationBarTitleText": "关于我们"
-      	}
-      },{
-      	"path": "setting/index",
-      	"style": {
-      		"navigationBarTitleText": "设置"
-      	}
-      },{
-      	"path": "setting/personInformation",
-      	"style": {
-      		"navigationBarTitleText": "个人信息"
-      	}
-      },{
-      	"path": "setting/aboutUs",
-      	"style": {
-      		"navigationBarTitleText": "关于我们"
-      	}
-      }]
-		},
+      }
+    },
+    {
+      "path": "pages/tabbar/message",
+      "style": {
+        "navigationBarTitleText": "",
+        "navigationStyle": "custom"
+      }
+    },
+    {
+      "path": "pages/tabbar/mine",
+      "style": {
+        "navigationBarTitleText": "",
+        "navigationStyle": "custom"
+      }
+    },
+    {
+      "path": "pages/tabbar/promotionCode",
+      "style": {
+        "navigationBarTitleText": "",
+        "navigationStyle": "custom"
+      }
+    }
+  ],
+  "subPackages": [
+    {
+      "root": "pagesHome",
+      "pages": [
+        {
+          "path": "homeSearch",
+          "style": {
+            "navigationBarTitleText": "商品搜索"
+          }
+        },
+        {
+          "path": "home/popularRecommend",
+          "style": {
+            "navigationBarTitleText": "热门推荐"
+          }
+        },
+        {
+          "path": "home/nearbyBusiness",
+          "style": {
+            "navigationBarTitleText": "附近商家"
+          }
+        },
+        {
+          "path": "marketer/index",
+          "style": {
+            "navigationBarTitleText": "商家详情"
+          }
+        },
+        {
+          "path": "marketer/productDetail",
+          "style": {
+            "navigationBarTitleText": "商品详情"
+          }
+        },
+        {
+          "path": "marketer/settleOrder",
+          "style": {
+            "navigationBarTitleText": "结算订单"
+          }
+        },
+        {
+          "path": "marketer/settleStatus",
+          "style": {
+            "navigationBarTitleText": "结算状态"
+          }
+        },
+        {
+          "path": "category/index",
+          "style": {
+            "navigationBarTitleText": "商品类型"
+          }
+        },
+        {
+          "path": "category/categoryStoreList",
+          "style": {
+            "navigationBarTitleText": "商品列表"
+          }
+        }
+      ]
+    },
+    {
+      "root": "pagesCustomer",
+      "pages": [
+        {
+          "path": "communityPostReview",
+          "style": {
+            "navigationBarTitleText": "发布评论"
+          }
+        }
+      ]
+    },
+    {
+      "root": "pagesMessage",
+      "pages": [
+        {
+          "path": "orderNotify",
+          "style": {
+            "navigationBarTitleText": "订单通知"
+          }
+        },
+        {
+          "path": "commentNotify",
+          "style": {
+            "navigationBarTitleText": "评论通知"
+          }
+        },
+        {
+          "path": "kudosNotify",
+          "style": {
+            "navigationBarTitleText": "点赞通知"
+          }
+        },
+        {
+          "path": "benefitsNotify",
+          "style": {
+            "navigationBarTitleText": "优惠福利"
+          }
+        }
+      ]
+    },
+    {
+      "root": "PageMine",
+      "pages": [
+        {
+          "path": "orderModules/index",
+          "style": {
+            "navigationBarTitleText": "我的订单"
+          }
+        },
+        {
+          "path": "orderModules/orderDetail",
+          "style": {
+            "navigationBarTitleText": "订单详情"
+          }
+        },
+        {
+          "path": "orderModules/orderComment",
+          "style": {
+            "navigationBarTitleText": "订单评价"
+          }
+        },
+        {
+          "path": "favourite",
+          "style": {
+            "navigationBarTitleText": "收藏列表"
+          }
+        },
+        {
+          "path": "shopCar",
+          "style": {
+            "navigationBarTitleText": "购物车"
+          }
+        },
+        {
+          "path": "coupon",
+          "style": {
+            "navigationBarTitleText": "优惠券列表"
+          }
+        },
+        {
+          "path": "goodsReserve",
+          "style": {
+            "navigationBarTitleText": "商品预约"
+          }
+        },
+        {
+          "path": "myTeam",
+          "style": {
+            "navigationBarTitleText": "我的团队"
+          }
+        },
+        {
+          "path": "serviceCenter/index",
+          "style": {
+            "navigationBarTitleText": "客服中心"
+          }
+        },
+        {
+          "path": "serviceCenter/serviceDetail",
+          "style": {
+            "navigationBarTitleText": "问题详情"
+          }
+        },
+        {
+          "path": "feedback",
+          "style": {
+            "navigationBarTitleText": "意见反馈"
+          }
+        },
+        {
+          "path": "aboutUs",
+          "style": {
+            "navigationBarTitleText": "关于我们"
+          }
+        },
+        {
+          "path": "setting/index",
+          "style": {
+            "navigationBarTitleText": "设置"
+          }
+        },
+        {
+          "path": "setting/personInformation",
+          "style": {
+            "navigationBarTitleText": "个人信息"
+          }
+        },
+        {
+          "path": "setting/aboutUs",
+          "style": {
+            "navigationBarTitleText": "关于我们"
+          }
+        }
+      ]
+    },
     {
       "root": "pageMerchant",
       "pages": [
         {
           "path": "index",
           "style": {
-          	"navigationBarTitleText": "",
+            "navigationBarTitleText": "",
             "navigationStyle": "custom"
           }
         },
         {
           "path": "mineModule/personalInfo",
           "style": {
-          	"navigationBarTitleText": "店铺信息"
+            "navigationBarTitleText": "店铺信息"
           }
         },
         {
           "path": "mineModule/storeEnviron",
           "style": {
-          	"navigationBarTitleText": "门店环境"
+            "navigationBarTitleText": "门店环境"
           }
         },
         {
           "path": "mineModule/openStoreAppealDetail",
           "style": {
-          	"navigationBarTitleText": "资质信息"
+            "navigationBarTitleText": "资质信息"
           }
         },
         {
           "path": "mineModule/certification/index",
           "style": {
-          	"navigationBarTitleText": "我要开店"
-          }
-        },
-		{
-		  "path": "mineModule/certification/storeInformation",
-		  "style": {
-		  	"navigationBarTitleText": "1/3门店信息"
-		  }
-		},
-		{
-		  "path": "mineModule/certification/corporateInformation",
-		  "style": {
-		  	"navigationBarTitleText": "2/3法人信息"
-		  }
-		},
-		{
-		  "path": "mineModule/certification/qualificationInformation",
-		  "style": {
-		  	"navigationBarTitleText": "2/3资质信息"
-		  }
-		},
-		{
-		  "path": "mineModule/certification/messageSubmit",
-		  "style": {
-		  	"navigationBarTitleText": "审核信息"
-		  }
-		},
-		{
-		  "path": "mineModule/certification/openStoreAppealDetail",
-		  "style": {
-		  	"navigationBarTitleText": "资质信息"
-		  }
-		},
-		{
-		  "path": "mineModule/setting/index",
-		  "style": {
-		  	"navigationBarTitleText": "设置"
-		  }
-		}
+            "navigationBarTitleText": "我要开店"
+          }
+        },
+        {
+          "path": "mineModule/certification/storeInformation",
+          "style": {
+            "navigationBarTitleText": "1/3门店信息"
+          }
+        },
+        {
+          "path": "mineModule/certification/corporateInformation",
+          "style": {
+            "navigationBarTitleText": "2/3法人信息"
+          }
+        },
+        {
+          "path": "mineModule/certification/qualificationInformation",
+          "style": {
+            "navigationBarTitleText": "2/3资质信息"
+          }
+        },
+        {
+          "path": "mineModule/certification/messageSubmit",
+          "style": {
+            "navigationBarTitleText": "审核信息"
+          }
+        },
+        {
+          "path": "mineModule/certification/openStoreAppealDetail",
+          "style": {
+            "navigationBarTitleText": "资质信息"
+          }
+        },
+        {
+          "path": "mineModule/setting/index",
+          "style": {
+            "navigationBarTitleText": "设置"
+          }
+        },
+        {
+          "path": "storeModule/appointList",
+          "style": {
+            "navigationBarTitleText": "预约列表"
+          }
+        },
+        {
+          "path": "storeModule/couponManage",
+          "style": {
+            "navigationBarTitleText": "商品优惠"
+          }
+        },
+        {
+          "path": "storeModule/evaluateBack",
+          "style": {
+            "navigationBarTitleText": "回复评价"
+          }
+        },
+        {
+          "path": "storeModule/evaluateManagement",
+          "style": {
+            "navigationBarTitleText": "评价管理"
+          }
+        },
+        {
+          "path": "storeModule/myTeam",
+          "style": {
+            "navigationBarTitleText": "我的团队"
+          }
+        },
+        {
+          "path": "storeModule/shopManage",
+          "style": {
+            "navigationBarTitleText": "店铺管理"
+          }
+        }
       ]
     }
-	],
-	"tabBar": {
-		"color": "#999999",
-		"selectedColor": "#42b2fa",
-		"borderStyle": "black",
-		"list": [{
-				"pagePath": "pages/tabbar/home",
-				"iconPath": "static/images/home.png",
-				"selectedIconPath": "static/images/home-select.png",
-				"text": "首页"
-			},
-			{
-				"pagePath": "pages/tabbar/community",
-				"iconPath": "static/images/community.png",
-				"selectedIconPath": "static/images/community-select.png",
-				"text": "社区"
-			},
-			{
-				"pagePath": "pages/tabbar/promotionCode",
-				"iconPath": "static/images/rqcode.png",
-				"selectedIconPath": "static/images/rqcode-select.png",
-				"text": "推广"
-			},
-			{
-				"pagePath": "pages/tabbar/message",
-				"iconPath": "static/images/message.png",
-				"selectedIconPath": "static/images/message-select.png",
-				"text": "消息"
-			},
-			{
-				"pagePath": "pages/tabbar/mine",
-				"iconPath": "static/images/mine.png",
-				"selectedIconPath": "static/images/mine-select.png",
-				"text": "我的"
-			}
-		]
-	},
-	"globalStyle": {
-		"navigationBarTextStyle": "black",
-		"navigationBarTitleText": "uni-app",
-		"navigationBarBackgroundColor": "#F8F8F8",
-		"backgroundColor": "#F8F8F8"
-	},
-	"condition": {
-		"current": 0, 
-		"list": [{
-			"name": "", 
-			"path": "", 
-			"query": "" 
-		}]
-	}
+  ],
+  "tabBar": {
+    "color": "#999999",
+    "selectedColor": "#42b2fa",
+    "borderStyle": "black",
+    "list": [
+      {
+        "pagePath": "pages/tabbar/home",
+        "iconPath": "static/images/home.png",
+        "selectedIconPath": "static/images/home-select.png",
+        "text": "首页"
+      },
+      {
+        "pagePath": "pages/tabbar/community",
+        "iconPath": "static/images/community.png",
+        "selectedIconPath": "static/images/community-select.png",
+        "text": "社区"
+      },
+      {
+        "pagePath": "pages/tabbar/promotionCode",
+        "iconPath": "static/images/rqcode.png",
+        "selectedIconPath": "static/images/rqcode-select.png",
+        "text": "推广"
+      },
+      {
+        "pagePath": "pages/tabbar/message",
+        "iconPath": "static/images/message.png",
+        "selectedIconPath": "static/images/message-select.png",
+        "text": "消息"
+      },
+      {
+        "pagePath": "pages/tabbar/mine",
+        "iconPath": "static/images/mine.png",
+        "selectedIconPath": "static/images/mine-select.png",
+        "text": "我的"
+      }
+    ]
+  },
+  "globalStyle": {
+    "navigationBarTextStyle": "black",
+    "navigationBarTitleText": "uni-app",
+    "navigationBarBackgroundColor": "#F8F8F8",
+    "backgroundColor": "#F8F8F8"
+  },
+  "condition": {
+    "current": 0,
+    "list": [
+      {
+        "name": "",
+        "path": "",
+        "query": ""
+      }
+    ]
+  }
 }