743180155@qq.com il y a 11 mois
Parent
commit
b2e2401b85
32 fichiers modifiés avec 1581 ajouts et 408 suppressions
  1. 65 68
      src/components/commentList/index.vue
  2. 3 3
      src/components/communityPop/index.vue
  3. 1 7
      src/components/empty/index.vue
  4. 2 2
      src/main.js
  5. 19 1
      src/pages.json
  6. 3 3
      src/pages/tabbar/community.vue
  7. 0 0
      src/pages/tabbar/components/HotItem.vue
  8. 0 0
      src/pages/tabbar/components/RecommendItem.vue
  9. 303 311
      src/pages/tabbar/home.vue
  10. 1 1
      src/pagesHome/home/components/serviceItem.vue
  11. 1 1
      src/pagesHome/home/nearbyBusiness.vue
  12. 1 1
      src/pagesHome/home/popularRecommend.vue
  13. 80 3
      src/pagesHome/marketer/components/couponComponent.vue
  14. 52 0
      src/pagesHome/marketer/components/evaluateComponent.vue
  15. 1 1
      src/pagesHome/marketer/components/settleBottomComponent.vue
  16. 1 3
      src/pagesHome/marketer/index.vue
  17. 419 0
      src/pagesHome/marketer/productDetail.vue
  18. 550 0
      src/pagesHome/marketer/settleOrder.vue
  19. 76 0
      src/pagesHome/marketer/settleStatus.vue
  20. BIN
      src/static/default-graph/empty.png
  21. BIN
      src/static/default-graph/no-address.png
  22. BIN
      src/static/default-graph/no-business.png
  23. BIN
      src/static/default-graph/no-collect.png
  24. BIN
      src/static/default-graph/no-comment.png
  25. BIN
      src/static/default-graph/no-coupon.png
  26. BIN
      src/static/default-graph/no-goods.png
  27. BIN
      src/static/default-graph/no-msg.png
  28. BIN
      src/static/default-graph/no-order.png
  29. BIN
      src/static/default-graph/no-record.png
  30. BIN
      src/static/default-graph/no-search.png
  31. BIN
      src/static/default-graph/no-signal.png
  32. 3 3
      src/utils/request.js

+ 65 - 68
src/components/commentList/index.vue

@@ -1,75 +1,72 @@
 <template>
-  <view>
-    <view v-if="list.length > 0">
-      <view
-        class="item"
-        v-for="item in list"
-        :key="item.id"
-        @click="$Router.push('/pages/community/commDetail/index')"
-      >
-        <view class="item-avatar">
-          <u-avatar src="https://cdn.uviewui.com/uview/album/1.jpg" />
-        </view>
-        <view class="item-content">
-          <u--text text="uView UI" type="primary" bold size="17"></u--text>
-          <u--text margin="0 0 8px 0" :text="item.textContent"></u--text>
-          <u-album :urls="urls2"></u-album>
-          <view>
-            <text class="iconfont icon-thumb-up" style="font-size: 48rpx; padding: 20rpx 0"></text>
-            <text
-              class="iconfont icon-heart"
-              style="font-size: 48rpx; padding: 20rpx 0; margin-left: 20rpx"
-            ></text>
-          </view>
-        </view>
-      </view>
-    </view>
-    <view v-else>
-      <u-empty icon="/static/default-graph/empty.png" text="暂无数据"></u-empty>
-    </view>
-  </view>
+	<view>
+		<view v-if="list.length > 0">
+			<view class="item" v-for="item in list" :key="item.id"
+				@click="$Router.push('/pages/community/commDetail/index')">
+				<view class="item-avatar">
+					<u-avatar src="https://cdn.uviewui.com/uview/album/1.jpg" />
+				</view>
+				<view class="item-content">
+					<u--text text="uView UI" type="primary" bold size="17"></u--text>
+					<u--text margin="0 0 8px 0" :text="item.textContent"></u--text>
+					<u-album :urls="urls2"></u-album>
+					<view>
+						<text class="iconfont icon-thumb-up" style="font-size: 48rpx; padding: 20rpx 0"></text>
+						<text class="iconfont icon-heart"
+							style="font-size: 48rpx; padding: 20rpx 0; margin-left: 20rpx"></text>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view v-else>
+			<u-empty mode="data" icon="http://cdn.uviewui.com/uview/empty/data.png">
+			</u-empty>
+		</view>
+	</view>
 </template>
 
 <script>
-export default {
-  props: {
-    list: {
-      type: Array,
-      default: [],
-    },
-  },
-  data() {
-    return {
-      albumWidth: 0,
-      urls2: [
-        'https://cdn.uviewui.com/uview/album/1.jpg',
-        'https://cdn.uviewui.com/uview/album/2.jpg',
-        'https://cdn.uviewui.com/uview/album/3.jpg',
-        'https://cdn.uviewui.com/uview/album/4.jpg',
-        'https://cdn.uviewui.com/uview/album/5.jpg',
-        'https://cdn.uviewui.com/uview/album/6.jpg',
-        'https://cdn.uviewui.com/uview/album/7.jpg',
-        'https://cdn.uviewui.com/uview/album/8.jpg',
-        'https://cdn.uviewui.com/uview/album/9.jpg',
-        'https://cdn.uviewui.com/uview/album/10.jpg',
-        'https://cdn.uviewui.com/uview/album/10.jpg',
-      ],
-    };
-  },
-};
+	export default {
+		props: {
+			list: {
+				type: Array,
+				default: [],
+			},
+		},
+		data() {
+			return {
+				albumWidth: 0,
+				urls2: [
+					'https://cdn.uviewui.com/uview/album/1.jpg',
+					'https://cdn.uviewui.com/uview/album/2.jpg',
+					'https://cdn.uviewui.com/uview/album/3.jpg',
+					'https://cdn.uviewui.com/uview/album/4.jpg',
+					'https://cdn.uviewui.com/uview/album/5.jpg',
+					'https://cdn.uviewui.com/uview/album/6.jpg',
+					'https://cdn.uviewui.com/uview/album/7.jpg',
+					'https://cdn.uviewui.com/uview/album/8.jpg',
+					'https://cdn.uviewui.com/uview/album/9.jpg',
+					'https://cdn.uviewui.com/uview/album/10.jpg',
+					'https://cdn.uviewui.com/uview/album/10.jpg',
+				],
+			};
+		},
+	};
 </script>
 
 <style lang="scss" scoped>
-.item {
-  padding: 10rpx 0;
-  display: flex;
-  .item-avatar {
-  }
-  .item-content {
-    margin-left: 10rpx;
-    ::v-deep .u-cell__body {
-      padding: 0;
-    }
-  }
-}
-</style>
+	.item {
+		padding: 10rpx 0;
+		display: flex;
+
+		.item-avatar {}
+
+		.item-content {
+			margin-left: 10rpx;
+
+			::v-deep .u-cell__body {
+				padding: 0;
+			}
+		}
+	}
+</style>

+ 3 - 3
src/components/communityPop/index.vue

@@ -34,7 +34,7 @@
       </view>
     </view>
 
-    <empty v-if="total == 0" />
+    <!-- <empty v-if="total == 0" /> -->
 
     <view class="bottom-box">
       <view class="bottom-item">
@@ -58,10 +58,10 @@
 <script>
 import { addClientComment, clientCommentList } from '@/api/client/message.js';
 import { addEvaulateRecords } from '@/api/client/community.js';
-import empty from '@/components/empty/index.vue';
+// import empty from '@/components/empty/index.vue';
 import { GetDateToNewData } from "@/utils/tools.js"
 export default {
-  components: { empty },
+  // components: { empty },
   data() {
     return {
       content: '',

+ 1 - 7
src/components/empty/index.vue

@@ -1,22 +1,16 @@
 <template>
   <view class="empty">
-    <image :src="empty" mode="scaleToFill" />
     <text>{{ text }}</text>
   </view>
 </template>
 
 <script>
-import empty from '@/static/default-graph/empty.png';
 export default {
   props: {
     text: {
       type: String,
       default: '暂无数据',
-    },
-    empty: {
-      type: String,
-      default: empty,
-    },
+    }
   },
 };
 </script>

+ 2 - 2
src/main.js

@@ -3,7 +3,7 @@ import App from './App';
 import uView from 'uview-ui';
 import store from '@/store';
 import cache from '@/mixin/cache';
-import empty from '@/components/empty';
+// import empty from '@/components/empty';
 // import tabbar from '@/components/tabbar';
 import { router, RouterMount } from '@/router'; //路径换成自己的
 App.mpType = 'app';
@@ -11,7 +11,7 @@ App.mpType = 'app';
 Vue.use(router);
 Vue.use(uView);
 Vue.mixin(cache);
-Vue.component('empty', empty);
+// Vue.component('empty', empty);
 // Vue.component('tabbar', tabbar);
 Vue.config.productionTip = false;
 

+ 19 - 1
src/pages.json

@@ -77,7 +77,25 @@
       "style": {
         "navigationBarTitleText": "商家详情"
       }
-    }
+    },
+	{
+	  "path": "marketer/productDetail",
+	  "style": {
+	    "navigationBarTitleText": "商品详情"
+	  }
+	},
+	{
+	  "path": "marketer/settleOrder",
+	  "style": {
+	    "navigationBarTitleText": "结算订单"
+	  }
+	},
+	{
+	  "path": "marketer/settleStatus",
+	  "style": {
+	    "navigationBarTitleText": "结算状态"
+	  }
+	}
     ]
   }],
   "tabBar": {

+ 3 - 3
src/pages/tabbar/community.vue

@@ -63,7 +63,7 @@
       </view>
     </view>
 
-    <empty v-if="initList.length == 0" />
+    <!-- <empty v-if="initList.length == 0" /> -->
 
     <view class="flex-box">
       <view class="flex" @click="handlerToPublish">
@@ -89,14 +89,14 @@
     addEvaulateRecords
   } from '@/api/client/community.js';
   import communityPop from "@/components/communityPop/index.vue"
-  import empty from "@/components/empty/index.vue"
+  // import empty from "@/components/empty/index.vue"
   import {
     GetDateToNewData
   } from "@/utils/tools.js"
   export default {
     components: {
       communityPop,
-      empty
+      // empty
     },
     data() {
       return {

+ 0 - 0
src/components/merchant/HotItem.vue → src/pages/tabbar/components/HotItem.vue


+ 0 - 0
src/components/merchant/RecommendItem.vue → src/pages/tabbar/components/RecommendItem.vue


+ 303 - 311
src/pages/tabbar/home.vue

@@ -1,337 +1,329 @@
 <template>
-  <view class="home">
-    <view>
-      <!-- 顶部导航 -->
-      <view class="nav-bar">
-        <u-navbar :bgColor="'#ffffff'" :placeholder="true">
-          <view slot="left" @click.stop="manualGetLocation">
-            <text>{{ nowAddress }}</text>
-            <text class="iconfont icon-chevron-down" />
-          </view>
-          <view slot="center">
-            <u-search placeholder="请输入搜索内容" :showAction="false" v-model="keyword"
-              @click="$Router.push('/pages/client/clientPackage/search')" :disabled="true" />
-          </view>
-        </u-navbar>
-      </view>
+	<view class="home">
+		<view>
+			<!-- 顶部导航 -->
+			<view class="nav-bar">
+				<u-navbar :bgColor="'#ffffff'" :placeholder="true">
+					<view slot="left" @click.stop="manualGetLocation">
+						<text>{{ nowAddress }}</text>
+						<text class="iconfont icon-chevron-down" />
+					</view>
+					<view slot="center">
+						<u-search placeholder="请输入搜索内容" :showAction="false" v-model="keyword"
+							@click="$Router.push('/pages/client/clientPackage/search')" :disabled="true" />
+					</view>
+				</u-navbar>
+			</view>
 
-      <!-- 轮播图 -->
-      <view class="home-swiper">
-        <u-swiper :list="swiperUrlList" @click="handlerSwiperSkip" indicator />
-      </view>
+			<!-- 轮播图 -->
+			<view class="home-swiper">
+				<u-swiper :list="swiperUrlList" @click="handlerSwiperSkip" indicator />
+			</view>
 
-      <!-- 商品分类 -->
-      <view class="home-list">
-        <u-grid :border="false" col="5">
-          <u-grid-item v-for="item in categories" :key="item.id" @tap="handleMenuClick(item)">
-            <u-icon :customStyle="{ paddingTop: 20 + 'rpx' }" :name="item.icon" :size="25"></u-icon>
-            <text class="grid-text">{{ item.name }}</text>
-          </u-grid-item>
-        </u-grid>
-        <u-toast ref="uToast" />
-      </view>
+			<!-- 商品分类 -->
+			<view class="home-list">
+				<u-grid :border="false" col="5">
+					<u-grid-item v-for="item in categories" :key="item.id" @tap="handleMenuClick(item)">
+						<u-icon :customStyle="{ paddingTop: 20 + 'rpx' }" :name="item.icon" :size="25"></u-icon>
+						<text class="grid-text">{{ item.name }}</text>
+					</u-grid-item>
+				</u-grid>
+				<u-toast ref="uToast" />
+			</view>
 
-      <!-- 热门推荐 -->
-      <view class="hot">
-        <u-cell :border="false" value="查看更多" isLink @click="$Router.push('/pagesHome/home/popularRecommend')">
-          <view slot="title" class="hot-title"> 热门推荐 </view>
-        </u-cell>
-        <block v-if="homeData.recommends && homeData.recommends.length > 0">
-          <view>
-            <u-grid :border="false" col="2">
-              <u-grid-item @click="$Router.push(`/pagesHome/marketer/index?id=${item.id}`)"
-                v-for="(item,index) in homeData.recommends" :key="item.id">
-                <recommend-item v-if="index < 4" :item="item"></recommend-item>
-              </u-grid-item>
-            </u-grid>
-          </view>
-        </block>
-        <block v-else>
-          <u-empty icon="/static/default-graph/no-business.png" text="暂无推荐商家"></u-empty>
-        </block>
-      </view>
+			<!-- 热门推荐 -->
+			<view class="hot">
+				<u-cell :border="false" value="查看更多" isLink @click="$Router.push('/pagesHome/home/popularRecommend')">
+					<view slot="title" class="hot-title"> 热门推荐 </view>
+				</u-cell>
+				<block v-if="homeData.recommends && homeData.recommends.length > 0">
+					<view>
+						<u-grid :border="false" col="2">
+							<u-grid-item @click="$Router.push(`/pagesHome/marketer/index?id=${item.id}`)"
+								v-for="(item,index) in homeData.recommends" :key="item.id">
+								<recommend-item v-if="index < 4" :item="item"></recommend-item>
+							</u-grid-item>
+						</u-grid>
+					</view>
+				</block>
+				<block v-else>
+					<u-empty mode="data" icon="http://cdn.uviewui.com/uview/empty/data.png">
+					</u-empty>
+				</block>
+			</view>
 
-      <!-- 附近商家 -->
-      <view class="near">
-        <u-cell :border="false" value="查看更多" isLink @click="$Router.push('/pagesHome/home/nearbyBusiness')">
-          <view slot="title" class="near-title"> 附近商家 </view>
-        </u-cell>
-        <block v-if="homeData.nears && homeData.nears.length > 0">
-          <view>
-            <u-grid :border="false" col="2">
-              <u-grid-item @click="$Router.push(`/pagesHome/marketer/index?id=${item.id}`)"
-                v-for="(item,index) in homeData.nears" :key="item.id">
-                <hot-item v-if="index < 4" :item="item"></hot-item>
-              </u-grid-item>
-            </u-grid>
-          </view>
-        </block>
-        <block v-else>
-          <u-empty icon="/static/default-graph/no-business.png" text="暂无附近商家"></u-empty>
-        </block>
-      </view>
+			<!-- 附近商家 -->
+			<view class="near">
+				<u-cell :border="false" value="查看更多" isLink @click="$Router.push('/pagesHome/home/nearbyBusiness')">
+					<view slot="title" class="near-title"> 附近商家 </view>
+				</u-cell>
+				<block v-if="homeData.nears && homeData.nears.length > 0">
+					<view>
+						<u-grid :border="false" col="2">
+							<u-grid-item @click="$Router.push(`/pagesHome/marketer/index?id=${item.id}`)"
+								v-for="(item,index) in homeData.nears" :key="item.id">
+								<hot-item v-if="index < 4" :item="item"></hot-item>
+							</u-grid-item>
+						</u-grid>
+					</view>
+				</block>
+				<block v-else>
+					<u-empty mode="data" icon="http://cdn.uviewui.com/uview/empty/data.png">
+					</u-empty>
+				</block>
+			</view>
 
-      <!-- 询价 -->
-      <!-- <drag-button :isDock="true" :existTabBar="true" @btnClick="btnClick" /> -->
-    </view>
-  </view>
+			<!-- 询价 -->
+			<!-- <drag-button :isDock="true" :existTabBar="true" @btnClick="btnClick" /> -->
+		</view>
+	</view>
 </template>
 
 <script>
-  import {
-    getCurrentLocation,
-    getHomePageApi,
-    getSwiperListApi
-  } from '@/api/client/home';
-  import {
-    mapGetters
-  } from 'vuex';
-  import RecommendItem from '@/components/merchant/RecommendItem.vue';
-  import HotItem from '@/components/merchant/HotItem.vue';
-  import dragButton from '@/components/drag/drag-button.vue';
-  import {
-    getMapLocation
-  } from "@/utils/mapUtil.js"
-  export default {
-    components: {
-      RecommendItem,
-      HotItem,
-      dragButton,
-    },
-    data() {
-      return {
-        list: [],
-        keyword: '',
-        swiperUrlList: [], // 轮播图url列表
-        swiperList: [],
-        homeData: {
-          categories: [],
-          nears: [],
-          recommends: [],
-        },
-        queryParams: {
-          longitude: '',
-          latitude: '',
-          region: ''
-        },
-        nowAddress: '', //当前地址
-      };
-    },
+	import { getCurrentLocation, getHomePageApi, getSwiperListApi } from '@/api/client/home';
+	import RecommendItem from './components/RecommendItem.vue';
+	import HotItem from './components/HotItem.vue';
+	import { getMapLocation } from "@/utils/mapUtil.js"
+	import { mapGetters } from 'vuex';
+	// import dragButton from '@/components/drag/drag-button.vue';
+	export default {
+		components: {
+			RecommendItem,
+			HotItem,
+			// dragButton,
+		},
+		data() {
+			return {
+				list: [],
+				keyword: '',
+				swiperUrlList: [], // 轮播图url列表
+				swiperList: [],
+				homeData: {
+					categories: [],
+					nears: [],
+					recommends: [],
+				},
+				queryParams: {
+					longitude: '',
+					latitude: '',
+					region: ''
+				},
+				nowAddress: '', //当前地址
+			};
+		},
 
-    computed: {
-      ...mapGetters(['location']),
-      categories() {
-        let initData = this.homeData.categories.map(item => {
-          if (!item.icon) {
-            item.icon = 'level';
-          }
-          return item;
-        });
-        let result =
-          initData.length > 14 ?
-          initData.splice(0, 14).concat([{
-            id: 'all',
-            icon: 'grid-fill',
-            name: '全部',
-            type: {
-              code: 'ALL',
-              description: '全部',
-            },
-          }, ]) :
-          initData.push({
-            id: 'all',
-            icon: 'grid-fill',
-            name: '全部',
-          });
-        return result;
-      },
-    },
-    mounted() {
-      this.getSwiperList();
-      // 页面显示时  获取当前零维度
-      uni.getLocation({
-        type: 'gcj02',
-        success: res => {
-          let {
-            longitude,
-            latitude
-          } = res
-          this.queryParams.longitude = longitude;
-          this.queryParams.latitude = latitude;
-          // getCurrentLocation 获取当前编码region
-          this.handlerGetRegion(longitude, latitude)
-        },
-        fail: () => {
-          this.manualGetLocation();
-        },
-      });
-    },
-    methods: {
-      // 获取当前编码region
-      handlerGetRegion(longitude, latitude) {
-        let point = `${latitude},${longitude}`
-        getCurrentLocation({
-          point
-        }).then(res => {
-          let {
-            city,
-            district,
-            id
-          } = res.data
-          this.queryParams.region = res.data.id;
-          if (district) {
-            this.nowAddress = district.name
-          } else if (city) {
-            this.nowAddress = city.name
-          } else {
-            this.nowAddress = '地图'
-          }
-          this.getHomeData(this.queryParams)
-          this.$store.commit('SET_LOCATION', {
-            longitude: longitude,
-            latitude: latitude,
-            region: res.data.id,
-            address: res.data.name
-          });
-        })
-      },
-      /* 轮播图 */
-      getSwiperList() {
-        getSwiperListApi().then(res => {
-          this.swiperList = res.data
-          res.data.map(rs => {
-            this.swiperUrlList.push(rs.viewUrl)
-          })
-        });
-      },
-      // 获取首页数据
-      getHomeData(location) {
-        getHomePageApi(location)
-          .then(res => {
-            this.homeData = res.data;
-            // 将分类数据做缓存处理
-            this.$store.commit('SET_CATEGORIES', this.homeData.categories);
-          })
-      },
-      // 手动选择城市
-      manualGetLocation() {
-        uni.chooseLocation({
-          success: res => {
-            let {
-              longitude,
-              latitude
-            } = res
-            this.queryParams.longitude = longitude.toFixed(5);
-            this.queryParams.latitude = latitude.toFixed(5);
-            this.handlerGetRegion(longitude.toFixed(5), latitude.toFixed(5))
-          },
-          fail: err => {
-          }
-        });
-      },
-      // 点击swiper跳转
-      handlerSwiperSkip(e) {
-        console.log("@@@swiperList", this.swiperList[e])
-      },
-      // 点击菜单
-      handleMenuClick(item) {
-        if (item.id === 'all') {
-          this.$Router.push('/pages/client/clientPackage/category');
-        } else {
-          uni.navigateTo({
-            url: `/pages/client/clientPackage/storeList?id=${item.id}`,
-          });
-        }
-      },
+		computed: {
+			...mapGetters(['location']),
+			categories() {
+				let initData = this.homeData.categories.map(item => {
+					if (!item.icon) {
+						item.icon = 'level';
+					}
+					return item;
+				});
+				let result =
+					initData.length > 14 ?
+					initData.splice(0, 14).concat([{
+						id: 'all',
+						icon: 'grid-fill',
+						name: '全部',
+						type: {
+							code: 'ALL',
+							description: '全部',
+						},
+					}, ]) :
+					initData.push({
+						id: 'all',
+						icon: 'grid-fill',
+						name: '全部',
+					});
+				return result;
+			},
+		},
+		mounted() {
+			this.getSwiperList();
+			// 页面显示时  获取当前零维度
+			uni.getLocation({
+				type: 'gcj02',
+				success: res => {
+					let {
+						longitude,
+						latitude
+					} = res
+					this.queryParams.longitude = longitude;
+					this.queryParams.latitude = latitude;
+					// getCurrentLocation 获取当前编码region
+					this.handlerGetRegion(longitude, latitude)
+				},
+				fail: () => {
+					this.manualGetLocation();
+				},
+			});
+		},
+		methods: {
+			// 获取当前编码region
+			handlerGetRegion(longitude, latitude) {
+				let point = `${latitude},${longitude}`
+				getCurrentLocation({
+					point
+				}).then(res => {
+					let {
+						city,
+						district,
+						id
+					} = res.data
+					this.queryParams.region = res.data.id;
+					if (district) {
+						this.nowAddress = district.name
+					} else if (city) {
+						this.nowAddress = city.name
+					} else {
+						this.nowAddress = '地图'
+					}
+					this.getHomeData(this.queryParams)
+					this.$store.commit('SET_LOCATION', {
+						longitude: longitude,
+						latitude: latitude,
+						region: res.data.id,
+						address: res.data.name
+					});
+				})
+			},
+			/* 轮播图 */
+			getSwiperList() {
+				getSwiperListApi().then(res => {
+					this.swiperList = res.data
+					res.data.map(rs => {
+						this.swiperUrlList.push(rs.viewUrl)
+					})
+				});
+			},
+			// 获取首页数据
+			getHomeData(location) {
+				getHomePageApi(location)
+					.then(res => {
+						this.homeData = res.data;
+						// 将分类数据做缓存处理
+						this.$store.commit('SET_CATEGORIES', this.homeData.categories);
+					})
+			},
+			// 手动选择城市
+			manualGetLocation() {
+				uni.chooseLocation({
+					success: res => {
+						let {
+							longitude,
+							latitude
+						} = res
+						this.queryParams.longitude = longitude.toFixed(5);
+						this.queryParams.latitude = latitude.toFixed(5);
+						this.handlerGetRegion(longitude.toFixed(5), latitude.toFixed(5))
+					},
+					fail: err => {}
+				});
+			},
+			// 点击swiper跳转
+			handlerSwiperSkip(e) {
+				console.log("@@@swiperList", this.swiperList[e])
+			},
+			// 点击菜单
+			handleMenuClick(item) {
+				if (item.id === 'all') {
+					this.$Router.push('/pages/client/clientPackage/category');
+				} else {
+					uni.navigateTo({
+						url: `/pages/client/clientPackage/storeList?id=${item.id}`,
+					});
+				}
+			},
 
-      /* 询价 */
-      btnClick() {
-        uni.navigateTo({
-          url: `/pages/client/clientUser/inquiry`,
-        });
-      },
-    },
-  };
+			/* 询价 */
+			btnClick() {
+				uni.navigateTo({
+					url: `/pages/client/clientUser/inquiry`,
+				});
+			},
+		},
+	};
 </script>
 
 <style lang="scss" scoped>
-.home {
-  background-color: #f0efef;
+	.home {
+		background-color: #f0efef;
 
-  .nav-bar {
-    ::v-deep .u-navbar__content {
-      background-color: #ffffff;
-    }
-  }
-}
+		.nav-bar {
+			::v-deep .u-navbar__content {
+				background-color: #ffffff;
+			}
+		}
+	}
 
-/* 头部搜索栏 */
-.home-header {
-  display: flex;
-  align-items: center;
-  height: 90rpx;
-  line-height: 90rpx;
-  padding: 0 20rpx;
-  background-color: #ffffff;
+	/* 头部搜索栏 */
+	.home-header {
+		display: flex;
+		align-items: center;
+		height: 90rpx;
+		line-height: 90rpx;
+		padding: 0 20rpx;
+		background-color: #ffffff;
 
-  .goto-address {
-    display: flex;
-    align-items: center;
+		.goto-address {
+			display: flex;
+			align-items: center;
 
-    .icon-sanjiaoxing1 {
-      font-size: 24rpx;
-      margin: 17rpx 10rpx 0 6rpx;
-    }
-  }
+			.icon-sanjiaoxing1 {
+				font-size: 24rpx;
+				margin: 17rpx 10rpx 0 6rpx;
+			}
+		}
 
-  .search-item {
-    flex: 1;
-  }
-}
+		.search-item {
+			flex: 1;
+		}
+	}
 
-/* 轮播图 */
-.home-swiper {
-  padding: 20rpx;
-  margin-bottom: 10rpx;
-}
+	/* 轮播图 */
+	.home-swiper {
+		padding: 20rpx;
+		margin-bottom: 10rpx;
+	}
 
-/* 商品分类 */
-.home-list {
-  background-color: #ffffff;
-  height: 360rpx;
-  margin: 0 20rpx 20rpx 20rpx;
-  padding: 20rpx 0 50rpx 0;
-  border-radius: 10rpx;
+	/* 商品分类 */
+	.home-list {
+		background-color: #ffffff;
+		height: 360rpx;
+		margin: 0 20rpx 20rpx 20rpx;
+		padding: 20rpx 0 50rpx 0;
+		border-radius: 10rpx;
 
-  .grid-text {
-    font-size: 12px;
-    color: #909399;
-    padding: 10rpx 0 20rpx 0rpx;
-    box-sizing: border-box;
-  }
-}
+		.grid-text {
+			font-size: 12px;
+			color: #909399;
+			padding: 10rpx 0 20rpx 0rpx;
+			box-sizing: border-box;
+		}
+	}
 
-/* 热门推荐 */
-.hot {
-  ::v-deep .u-cell__body {
-    padding: 10rpx 20rpx;
+	/* 热门推荐 */
+	.hot {
+		::v-deep .u-cell__body {
+			padding: 10rpx 20rpx;
 
-    .hot-title {
-      border-left: 4px solid $uni-color-primary;
-      padding-left: 20rpx;
-    }
-  }
-}
+			.hot-title {
+				border-left: 4px solid $uni-color-primary;
+				padding-left: 20rpx;
+			}
+		}
+	}
 
-.near {
-  ::v-deep .u-cell__body {
-    padding: 10rpx 20rpx;
+	.near {
+		::v-deep .u-cell__body {
+			padding: 10rpx 20rpx;
 
-    .near-title {
-      border-left: 4px solid $uni-color-primary;
-      padding-left: 20rpx;
-    }
-  }
-}
-
-</style>
+			.near-title {
+				border-left: 4px solid $uni-color-primary;
+				padding-left: 20rpx;
+			}
+		}
+	}
+</style>

+ 1 - 1
src/components/service/index.vue → src/pagesHome/home/components/serviceItem.vue

@@ -64,7 +64,7 @@
       handlerRouterSkip(item) {
         // if (this.skipType == 0) {
         uni.navigateTo({
-          url: `/pages/client/clientPackage/storeDetail?id=${item.id}`,
+          url: `/pagesHome/marketer/index?id=${item.id}`,
         });
         // } else if (this.skipType == 1) {
         //   uni.navigateTo({

+ 1 - 1
src/pagesHome/home/nearbyBusiness.vue

@@ -12,7 +12,7 @@
     getHomePageApi,
     getCurrentLocation
   } from '@/api/client/home';
-  import serviceItem from '@/components/service/index.vue';
+  import serviceItem from './components/serviceItem.vue';
   import {
     mapGetters
   } from "vuex"

+ 1 - 1
src/pagesHome/home/popularRecommend.vue

@@ -12,7 +12,7 @@
     getHomePageApi,
     getCurrentLocation
   } from '@/api/client/home';
-  import serviceItem from '@/components/service/index.vue';
+  import serviceItem from './components/serviceItem.vue';
   import {
     mapGetters
   } from "vuex"

+ 80 - 3
src/pagesHome/marketer/components/couponComponent.vue

@@ -38,7 +38,9 @@
 </template>
 
 <script>
-  import { acceptConpons } from "@/api/client/mine.js"
+  import {
+    acceptConpons
+  } from "@/api/client/mine.js"
   export default {
     props: {
       coupons: {
@@ -73,9 +75,7 @@
 
       // 点击领取优惠卷
       handlerGetCoupon(item, index) {
-        console.log('@@@@item', item);
         acceptConpons(item.id).then(res => {
-          console.log('@@@@res',res);
           if (res.code === 'OK') {
             uni.showToast({
               title:'领取成功',
@@ -217,4 +217,81 @@
     }
   }
 
+  // .coupon {
+  //   height: 300rpx;
+  //   display: flex;
+  //   font-size: 32rpx;
+  //   color: #f2110d;
+  //   border-radius: 10rpx;
+  //   margin-bottom: 25rpx;
+  //   padding: 20rpx 25rpx;
+  //   box-sizing: border-box;
+  //   background-color: #faeaea;
+  //   border: 2rpx solid #eb8b8b;
+
+  //   .coupon-left {
+  //     width: 10%;
+  //     height: 100%;
+
+  //     .coupon-left-price {
+  //       font-size: 65rpx;
+  //     }
+  //   }
+
+  //   .coupon-middle {
+  //     flex-direction: column;
+  //     justify-content: space-between;
+  //     align-items: flex-start;
+  //     width: 60%;
+  //     height: 100%;
+
+  //     .coupon-middle-user {
+  //       width: 100%;
+  //       font-size: 30rpx;
+  //       font-weight: 600;
+  //     }
+
+  //     .coupon-middle-type {
+  //       width: 100%;
+  //       font-size: 24rpx;
+  //       font-weight: 600;
+  //       opacity: 0.8;
+  //     }
+  //   }
+
+  //   .coupon-right {
+  //     flex-direction: column;
+  //     justify-content: space-between;
+  //     align-items: flex-start;
+  //     width: 25%;
+  //     height: 100%;
+
+  //     .coupon-right-time {
+  //       height: 100%;
+  //       flex-direction: column;
+  //       justify-content: space-between;
+  //       align-items: center;
+
+  //       .tip {
+  //         font-size: 30rpx;
+  //         font-weight: 600;
+  //       }
+
+  //       .time {
+  //         font-size: 24rpx;
+  //         font-weight: 600;
+  //         opacity: 0.8;
+  //       }
+  //     }
+
+  //     .coupon-right-get {
+  //       width: 80%;
+  //       background-color: #e8a87c;
+  //       height: 55rpx;
+  //       text-align: center;
+  //       line-height: 55rpx;
+  //       margin-top: 15rpx;
+  //     }
+  //   }
+  // }
 </style>

+ 52 - 0
src/pagesHome/marketer/components/evaluateComponent.vue

@@ -0,0 +1,52 @@
+<template>
+  <view>
+    <view class="Evaluate-content">
+      <view v-for="(item, index) in comments" :key="index">
+        <view class="commnet-user flex">
+          <image :src="item.user.avatar" style="width: 40px; height: 40px; border-radius: 50%" />
+          <view class="commnet-user-middle flex">
+            <view class="name flex">{{ item.user.nickname }}</view>
+            <u-rate
+              class="rate"
+              :value="item.score"
+              readonly
+              :size="12"
+              gutter="1"
+              active-color="#ffa500"
+            />
+          </view>
+          <view class="time">{{ item.createTime }}</view>
+        </view>
+        <view class="commnet-text">{{ item.content }}</view>
+        <view class="commnet-img">
+          <image
+            class="img"
+            v-for="(img, index) in item.attachments"
+            :key="index"
+            :src="url"
+            mode="widthFix"
+          />
+        </view>
+      </view>
+
+      <u-empty
+        v-if="comments.length == 0"
+        mode="message"
+        icon="http://cdn.uviewui.com/uview/empty/message.png"
+      ></u-empty>
+    </view>
+  </view>
+</template>
+
+<script>
+export default {
+  props: {
+    comments: {
+      type: Array,
+      default: [],
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 1 - 1
src/pagesHome/marketer/components/settleBottomComponent.vue

@@ -123,7 +123,7 @@
           return
         } else {
           uni.navigateTo({
-            url: `/pages/client/clientPackage/uptickOrder?ids=${this.ids}`
+            url: `/pagesHome/marketer/settleOrder?ids=${this.ids}`
           })
         }
       },

+ 1 - 3
src/pagesHome/marketer/index.vue

@@ -280,10 +280,8 @@
       },
       // 点击跳转到商品详情
       handlerSkipGoodsDetail(item, index) {
-        console.log("@@@@item", item.id)
-        console.log("this.queryParams.id", this.queryParams.id)
         uni.navigateTo({
-          url: `/pages/client/clientPackage/serviceDetail/index?id=${item.id}&shopId=${this.queryParams.id}`,
+          url: `/pagesHome/marketer/productDetail?id=${item.id}&shopId=${this.queryParams.id}`,
         });
       },
       // 预约

+ 419 - 0
src/pagesHome/marketer/productDetail.vue

@@ -0,0 +1,419 @@
+<template>
+  <view class="service">
+    <view class="service-content">
+      <!-- 顶部 -->
+      <!-- <view class="flex" style="margin-top: 10rpx">
+        <view class="flex">
+          <u-icon name="share-square" size="24" />
+          <text style="font-size: 24rpx; color: #666">七仔美容</text>
+        </view>
+        <u-icon name="share-square" size="24" @click="handlerShare" />
+      </view> -->
+
+      <!-- 标题和轮播图 -->
+      <view>
+        <view class="service-title">{{ goods.name }}</view>
+        <u-swiper :list="banners" previousMargin="30" nextMargin="30" circular bgColor="#ffffff" height="190" />
+      </view>
+
+      <!-- 价格 -->
+      <view class="flex price-content">
+        <view>
+          <view>
+            <text class="price">¥</text>
+            <text class="price-text">{{ goods.specialPrice }}</text>
+          </view>
+          <text class="price">券后¥{{ goods.originalPrice }}</text>
+        </view>
+        <!-- <view class="text_title">半售200+</view> -->
+      </view>
+
+      <!-- 评价 -->
+      <view>
+        <!-- <view class="flex evaluate">
+          <view class="flex">
+            <text style="margin-right: 30rpx">评价</text>
+            <u-rate :value="5" readonly activeColor="#f3b935" />
+            <text style="font-size: 24rpx; color: #f4b931">100%</text>
+          </view>
+          <view class="flex">
+            <text class="text_title" style="margin-right: 20rpx">共40个消费评价</text>
+            <u-icon name="arrow-right" size="16" color="#999" />
+          </view>
+        </view> -->
+        <!-- <view class="evaluate-context">
+          <view class="flex evaluate">
+            <view class="flex">
+              <text style="margin-right: 30rpx">优惠</text>
+              <view class="text_title"> 您有2张8元无门槛券待额 </view>
+            </view>
+            <view class="flex" @click="openPopup">
+              <text class="text_title" style="margin-right: 20rpx">去领取</text>
+              <u-icon name="arrow-right" size="16" color="#999" />
+            </view>
+          </view>
+        </view> -->
+      </view>
+    </view>
+
+    <!-- 弹窗 -->
+    <!-- <u-popup :show="show" mode="bottom" :safeAreaInsetBottom="true">
+      <view>
+        <GainCoupon @close="closeCoupon" :coupons="coupons"></GainCoupon>
+      </view>
+    </u-popup> -->
+
+    <!-- 占位 -->
+    <view class="placeholder"></view>
+
+    <!-- 服务详情 -->
+    <view class="detail">
+      <view>
+        <u-tabs :list="detailList" lineWidth="50" lineColor="#fdbf05" :activeStyle="{
+            color: '#303133',
+            fontWeight: 'bold',
+            transform: 'scale(1.05)',
+          }" :inactiveStyle="{
+            color: '#606266',
+            transform: 'scale(1)',
+          }" itemStyle="padding-left: 15px; padding-right: 15px; height: 40px;" @change='handlerChange' />
+      </view>
+
+      <view v-show="current == 0">
+        {{ goods.description }}
+      </view>
+    </view>
+
+    <!-- 评价内容 -->
+    <!-- <view class="Evaluate-content">
+      <EvaluateContent :comments="comments"></EvaluateContent>
+    </view> -->
+
+    <!-- 底部 -->
+    <view class="service-footer">
+      <view class="user-operate" v-for="(item, index) in userOperate" :key="index" @tap="collect(item, index)">
+        <u-icon class="user-operate-icon" :name="item.icon" size="24" />
+        <text class="user-operate-text">{{ item.name }}</text>
+      </view>
+      <view class="user-operate" @tap="handlerFavorite">
+        <u-icon class="user-operate-icon" :name="goods.favorites ? favorite_list.fill : favorite_list.icon" size="24" />
+        <text class="user-operate-text">{{ favorite_list.name }}</text>
+      </view>
+      <view class="buyNow">
+        <view class="cart" @click="handlerAddCart">加入购物车</view>
+        <!-- <view class="buy" @click="handlerImmediateBy">立即购买</view> -->
+      </view>
+    </view>
+  </view>
+</template>
+
+<script>
+  import {
+    getGoodsDetailApi,
+    addFavorite,
+    addShoppingCart,
+    addGoodsFavorite,
+    cancelFavorite,
+    // getGoodsConcentList,
+    accountToOrderGetComment,
+  } from '@/api/client/business.js';
+  import {  accountTotIdGetConponList } from '@/api/client/mine.js';
+  import couponComponent from './components/couponComponent.vue';
+  import evaluateComponent from './components/evaluateComponent.vue';
+  export default {
+    components: {
+      couponComponent,
+      evaluateComponent,
+    },
+    data() {
+      return {
+        userOperate: [{
+            name: '店铺',
+            icon: 'file-text',
+          },
+          // ,
+          //       {
+          //         name: '立即咨询',
+          //         icon: 'chat',
+          //       },
+        ],
+        favorite_list: {
+          name: '收藏',
+          icon: 'heart',
+          fill: 'heart-fill',
+        },
+        goods: [], //商品详情
+        banners: [],
+        coupons: [], //优惠券
+        comments: [], // 评论
+        id: '', //商品id
+        shoopId: null, //店铺id
+        show: false,
+        detailList: [{
+            id: '1',
+            name: '服务详情',
+          },
+          {
+            id: '2',
+            name: '购买须知',
+          },
+          {
+            id: '3',
+            name: '网友评价',
+          },
+        ],
+        current: 0
+      };
+    },
+    onLoad(option) {
+      // 获取商品详情接口
+      this.shoopId = option.shopId;
+      this.id = option.id;
+      this.handlerInitList(this.id)
+    },
+    methods: {
+      handlerChange(e) {
+        this.current = e.index
+      },
+      openPopup() {
+        this.show = true;
+      },
+      // closeCoupon(data) {
+      //   this.show = data;
+      //   this.handlerGetGoodsConcentList()
+      // },
+      handlerInitList(id) {
+        getGoodsDetailApi(id).then(res => {
+          this.goods = res.data.goods;
+          this.comments = res.data.comments;
+          res.data.goods.banners.map(rs => {
+            this.banners.push(rs.url);
+          });
+          this.handlerGetGoodsConcentList();
+        });
+      },
+      handlerGetGoodsConcentList() {
+        // 获取商品评价列表
+        let params = {
+          // merchantId:this.shoopId,
+          goodsId: this.goods.id,
+        };
+        accountToOrderGetComment(params).then(res => {
+          console.log('@@@@res', res);
+        });
+
+        // 根据id获取优惠券列表
+        // accountTotIdGetConponList(this.shoopId,{ paging:'1,10' }).then(res=>{
+        //   this.coupons = res.data.records
+        // })
+      },
+
+      // 点击分享
+      handlerShare() {
+        uni.share({
+          provider: 'weixin',
+          scene: 'WXSceneSession',
+          type: 1,
+          summary: '我正在使用HBuilderX开发uni-app,赶紧跟我一起来体验!',
+          success: function(res) {},
+          fail: function(err) {},
+        });
+      },
+
+      // 选择底部tab店铺收藏咨询
+      collect(item, index) {
+        switch (index) {
+          case 0:
+            uni.navigateBack(-1)
+            break;
+          case 1:
+            uni.showToast({
+              title: '暂无',
+              icon: 'none',
+            });
+            break;
+        }
+      },
+      // 点击收藏1
+      handlerFavorite() {
+        if (this.goods.favorites) {
+          cancelFavorite(this.id).then(res => {
+            if (res.code === 'OK') {
+              this.handlerInitList(this.id);
+              uni.showToast({
+                title: '取消收藏',
+                icon: 'none',
+              });
+            } else {
+              uni.showToast({
+                title: res.msg,
+                icon: 'none',
+              });
+              return;
+            }
+          });
+        } else {
+          addGoodsFavorite(this.id).then(res => {
+            if (res.code === 'OK') {
+              this.handlerInitList(this.id);
+              uni.showToast({
+                title: '收藏成功',
+                icon: 'none',
+              });
+            } else {
+              uni.showToast({
+                title: res.msg,
+                icon: 'none',
+              });
+              return;
+            }
+          });
+        }
+      },
+
+      // 点击购买按钮
+      // handlerImmediateBy() {
+      //   this.$store.commit('order/GET_ORDER_LIST', this.goods);
+      //   uni.navigateTo({
+      //     url: `/pages/client/clientPackage/uptickOrder?id=${this.id}`,
+      //   });
+      // },
+
+      // 加入购物车
+      handlerAddCart() {
+        let params = {
+          merchantId: this.shoopId,
+          goodsId: this.goods.id,
+          quantity: 1,
+          price: this.goods.specialPrice,
+          goodsName: this.goods.name,
+          goodsPic: this.goods.logo,
+          originalPrice: this.goods.originalPrice,
+        };
+        addShoppingCart(params).then(res => {
+          if (res.code === 'OK') {
+            uni.showToast({
+              title: '购物车添加成功',
+              icon: 'none',
+            });
+          } else {
+            uni.showToast({
+              title: res.message,
+              icon: 'none',
+            });
+            return;
+          }
+        });
+      },
+    },
+  };
+</script>
+
+<style lang="scss" scoped>
+  .service {
+    min-height: 100vh;
+    background-color: #fff;
+    padding: 0 20rpx;
+  
+    .service-content {
+      .service-title {
+        font-size: 36rpx;
+        font-weight: bold;
+        margin: 20rpx;
+      }
+    }
+    .price-content {
+      margin: 20rpx;
+      .price {
+        font-size: 24rpx;
+        color: #e02e24;
+      }
+      .price-text {
+        font-size: 36rpx;
+        color: #e02e24;
+      }
+    }
+    .evaluate {
+      height: 30rpx;
+      margin: 30rpx 0 30rpx 20rpx;
+      padding-bottom: 30rpx;
+      border-bottom: 1rpx solid #f4f4f4;
+    }
+    .evaluate-context {
+      .evaluate {
+        border-bottom: none;
+        padding-bottom: 10rpx;
+      }
+    }
+  
+    /* 占位 */
+    .placeholder {
+      height: 30rpx;
+      background-color: #f4f4f4;
+    }
+  }
+  .flex {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+  }
+  
+  .text_title {
+    font-size: 24rpx;
+    color: #999;
+  }
+  
+  // 底部
+  .service-footer {
+    height: 60px;
+    padding: 10rpx 20rpx;
+    position: fixed;
+    left: 0;
+    bottom: 0;
+    right: 0;
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    background-color: #fff;
+    border-top: 1px solid #eb8b8b;
+    box-sizing: border-box;
+  
+    .u-icon {
+      justify-content: center !important;
+    }
+  
+    .user-operate {
+      text-align: center;
+    }
+  
+    .user-operate-text {
+      font-size: 24rpx;
+      font-weight: 600;
+    }
+  
+    .buyNow {
+      width: 200px;
+      height: 40px;
+      display: flex;
+      justify-content: center;
+      font-size: 26rpx;
+      color: #fff;
+      text-align: center;
+      .cart {
+        width: 150px;
+        line-height: 40px;
+        cursor: pointer;
+        background-color: #fe9f1e;
+        // border-radius: 40px 0px 0px 40px;
+        border-radius: 40px ;
+      }
+      .buy {
+        width: 100px;
+        line-height: 40px;
+        cursor: pointer;
+        background-color: #fe7421;
+        border-radius: 0 40px 40px 0;
+      }
+    }
+  }
+</style>

+ 550 - 0
src/pagesHome/marketer/settleOrder.vue

@@ -0,0 +1,550 @@
+<template>
+	<view class="container">
+
+		<view class="content-box">
+			<!-- <view class="message-box">
+				<view class="message-item">
+					<view class="item-left"> 订购人电话 </view>
+					<view class="item-right">
+						<u--input border='none' type='number' maxlength='11' fontSize='14' placeholder="请输入您的订购电话"
+							v-model="phoneNumber"></u--input>
+					</view>
+				</view>
+				<u-line margin='20rpx 0'></u-line>
+				<view class="message-item">
+					<view class="item-left"> 备注 </view>
+					<view class="item-right">
+						<u--textarea v-model="goodsRemark" placeholder="请输入备注内容" autoHeight></u--textarea>
+					</view>
+				</view>
+			</view> -->
+
+
+			<view class="message-box">
+				<view class="message-item">
+					<view class="item-left"> 支付方式 </view>
+					<view class="item-right flex-end">
+						<span>在线支付</span>
+						<image class="right-img" src="@/static/order/ic_order_weixin.png"></image>
+					</view>
+				</view>
+			</view>
+
+			<view class="message-box">
+				<view class="goods-title"> {{ init_list.merchantDTO.name }} </view>
+				<u-line margin='20rpx 0'></u-line>
+				<view class="goods-item" v-for="(item,index) of init_list.cartItems" :key='item.goodsId'>
+					<view class="item-left">
+						<image class="left-img" src="@/static/QR57a.jpg"></image>
+						<view class="left-text">
+							<view class="text-name">{{ item.goodsName }}</view>
+							<view class="text-number">×{{ item.quantity }}</view>
+							<view class="price-box">
+								<p class="price red-color"> <span style="font-size: 24rpx;">¥</span>{{ item.price }}</p>
+								<span class="false-price">¥{{ item.originalPrice ? item.originalPrice : 0}}</span>
+							</view>
+						</view>
+					</view>
+					<view class="item-right">
+						<u-number-box v-model="item.quantity" @change="valChange(item,$event)"></u-number-box>
+					</view>
+				</view>
+			</view>
+
+			<!-- <view class="message-box">
+				<view class="couon-box">
+					<view class="coupon-left">
+						<image class="img" src='@/static/images/coupon.png'></image>
+						<view>通用优惠</view>
+					</view>
+					<view class="coupon-right red-color"> -0.1 </view>
+				</view>
+				<u-line margin='20rpx 0'></u-line>
+				<view class="couon-box" @click="openCouponshow">
+					<view class="coupon-left">
+						<image class="img" src='@/static/images/coupon.png'></image>
+						<span>商家优惠券</span>
+					</view>
+					<view class="coupon-right" >
+						<view class=""> {{ coupon_list.couponHistoryDetailList.length == 0 ? '暂无可用' : `${coupon_list.couponHistoryDetailList.length} 张优惠券可用` }} </view>
+						<u-icon name="arrow-right" size='13'></u-icon>
+					</view>
+				</view>
+			</view> -->
+
+			<view class="message-box">
+				<view class="message-item">
+					<view class="item-left"> 订单总价 </view>
+					<view class=" flex-end red-color" style="align-items: center;">
+						<p style="margin-right: 20rpx; font-size: 36rpx; font-weight: bold;">
+							¥{{ orderParams.price.toFixed(2) }}</p>
+						<p style="text-decoration: line-through;font-style: italic;">(
+							已优惠¥{{ orderParams.discountPrice.toFixed(2) }} )</p>
+					</view>
+				</view>
+			</view>
+
+			<view class="message-box">
+				<view class="message-name"> 购买须知 </view>
+				<view class="message-text" style="text-indent:32.4px;">
+					洗车机常见的类型有高压洗车机和无水洗车机两种,高压洗车机可以配有不同的喷嘴,可实现不同场景下的清洗需求。
+					无水洗车机则是一种更为环保的洗车方式,它可以用高科技的化学技术在不用水的情况下清洗车辆。因此,
+					在购买洗车机时需要根据自己的实际需求进行选择
+				</view>
+			</view>
+		</view>
+
+		<!-- <u-popup :show="coupon_show" @close="close" mode='bottom' round='20' bgColor='#F4F4F4'>
+			<view class="pop-box">
+				<view class="pop-title"> 商家优惠券 </view>
+				<u-line margin='20rpx 0'></u-line>
+
+				<view class="pop-coupon-box">
+				  <view class="pop-item" v-for="(item,index) of coupon_list.couponHistoryDetailList" @click="handlerSelectCoupon(item,index)">
+				  	<view class="item-box">
+				  		<view class="item-left">
+				  			<view class="img-box">
+				  				<image class="left-img" src="@/static/images/honglei.png"></image>
+				  			</view>
+				  			<view class="left-text">
+				  				<view class="text-title"> {{ item.couponDTO.name }} </view>
+				  				<view class="text"> 到期时间 : {{ item.couponDTO.endTime }} </view>
+				  			</view>
+				  		</view>
+				  		<view class="item-right">
+				  			<view class="price red-color">
+				  				<span class="price-symbol">¥</span> {{ item.couponDTO.reduce == null ? 0 : item.couponDTO.reduce }}
+				  			</view>
+				  			<view class="text"> {{ item.couponDTO.name }} </view>
+				  		</view>
+				  	</view>
+				    <view class="item-bottom">
+				      <span>{{ item.couponDTO.name }}</span>
+				    </view>
+				  </view>
+				</view>
+
+        <view class="pop-bottom">
+          <button class='coupon-btn' @click="handlerSelectCoupon">确定</button>
+        </view>
+			</view>
+		</u-popup> -->
+
+		<view class="btn-box">
+			<view class="btn" @click="handlerSettleBtn">
+				结算
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import { generateOrder, getCartList, generateConfirmOrder, editGoodsNumb } from "@/api/client/business.js"
+	import { successfulPayment } from "@/api/client/order.js"
+	//   import { maintainCouponPaging } from "@/api/client/mine.js"
+	import { changeTime } from "@/utils/date"
+	export default {
+		data() {
+			return {
+				coupon_show: false,
+				coupon_list: [],
+				init_list: {
+					cartItems: [],
+					merchantDTO: []
+				},
+				phoneNumber: null, // 订购电话
+				goodsRemark: '', // 备注
+				merchantId: null
+			}
+		},
+		mounted() {
+			this.handlerInitList()
+		},
+		onLoad(option) {
+			this.merchantId = option.ids
+		},
+		computed: {
+			orderParams() {
+				let price = 0
+				let originalPrice = 0
+				let discountPrice = 0
+				if (this.init_list.cartItems) {
+					this.init_list.cartItems.map(rs => {
+						price += Number((rs.price).toFixed(2) * rs.quantity)
+						originalPrice += Number((rs.originalPrice).toFixed(2) * rs.quantity)
+					})
+					discountPrice = originalPrice - price
+				}
+				return {
+					price,
+					discountPrice
+				}
+			}
+		},
+		methods: {
+			// 初始化列表接口
+			handlerInitList() {
+				getCartList(this.merchantId).then(res => {
+					this.init_list.cartItems = res.data.cartItems
+					this.init_list.merchantDTO = res.data.merchantDTO
+					// this.handlerInitCouponList(res.data.cartItems)
+				})
+			},
+			// 初始化优惠券列表
+			// handlerInitCouponList(cartItems){
+			//   let params = {
+			//     cartIds:[],
+			//     merchantId:this.merchantId
+			//   }
+			//   cartItems.map(rs=>{
+			//     params.cartIds.push(rs.id)
+			//   })
+			//   // 订单接口 - 根据购物车信息生成确认单信息
+			//   generateConfirmOrder(params).then(res=>{
+			//     this.coupon_list = res.data
+			//     this.coupon_list.couponHistoryDetailList.map(rs=>{
+			//       rs.couponDTO.endTime = changeTime(rs.couponDTO.createTime)
+			//     })
+			//   })
+			// },
+			// 结算按钮
+			handlerSettleBtn() {
+				let params = {
+					payType: '2',
+					cartIds: [],
+					merchantId: this.init_list.merchantDTO.id
+				}
+				this.init_list.cartItems.map(rs => {
+					params.cartIds.push(rs.goodsId)
+				})
+				generateOrder(params).then(res => {
+					if (res.code === 'OK') {
+						this.handlerCallOrderBack(res.data.order.id)
+					} else {
+						uni.showToast({
+							title: res.msg,
+						})
+						return
+					}
+				})
+			},
+			// 支付回调
+			handlerCallOrderBack(id) {
+				successfulPayment(id, {
+					payType: 2
+				}).then(res => {
+					if (res.code == 'OK') {
+						uni.navigateTo({
+							url: '/pagesHome/marketer/settleStatus'
+						})
+					} else {
+						uni.showToast({
+							title: res.message,
+							icon: 'none'
+						})
+						return
+					}
+				})
+			},
+
+			close() {
+				this.coupon_show = false
+			},
+			// 点击展示优惠券pop
+			openCouponshow() {
+				this.coupon_show = true
+			},
+			// 选择优惠券 点击确定按钮
+			handlerSelectCoupon() {
+				this.coupon_show = false
+			},
+			valChange(item, e) {
+				editGoodsNumb(item.id, {
+					quantity: e.value
+				}).then(res => {
+					console.log('@@@2res', res)
+				})
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.container {
+		min-height: calc(100vh - 40rpx);
+		background: linear-gradient(to bottom, #bacff5, #F2F4FA, #fff);
+		padding: 20rpx;
+
+		.content-box {
+			padding: 20rpx 20rpx 120rpx;
+			max-height: calc(100vh - 180rpx);
+			overflow-y: auto;
+
+			.message-box {
+				padding: 20rpx;
+				border-radius: 20rpx;
+				background-color: #fff;
+				margin-bottom: 20rpx;
+				box-shadow: 5px 5px 5px rgb(0, 0, 0, 0.1);
+
+				.message-item {
+					display: flex;
+					justify-content: space-between;
+					align-items: center;
+
+					.item-left {
+						font-size: 32rpx;
+						font-weight: bold;
+
+					}
+
+					.item-right {
+						width: 60%;
+						align-items: center;
+
+						.right-img {
+							width: 50rpx;
+							height: 50rpx;
+							margin-left: 20rpx;
+						}
+					}
+				}
+
+				.couon-box {
+					display: flex;
+					justify-content: space-between;
+					align-items: center;
+
+					.coupon-left {
+						display: flex;
+						align-items: center;
+						font-size: 30rpx;
+
+						.img {
+							width: 50rpx;
+							height: 50rpx;
+							margin-right: 20rpx;
+						}
+					}
+
+					.coupon-right {
+						display: flex;
+						align-items: center;
+					}
+				}
+
+				.goods-title {
+					font-size: 32rpx;
+				}
+
+				.goods-item {
+					margin-bottom: 30rpx;
+					display: flex;
+					justify-content: space-between;
+					align-items: center;
+
+					.item-left {
+						display: flex;
+
+						.left-img {
+							width: 130rpx;
+							height: 130rpx;
+							border-radius: 10rpx;
+						}
+
+						.left-text {
+							display: flex;
+							flex-direction: column;
+							justify-content: space-around;
+							margin-left: 20rpx;
+
+							.text-name {
+								font-weight: bold;
+								font-size: 30rpx;
+								width: 260rpx;
+								white-space: nowrap;
+								overflow: hidden;
+								text-overflow: ellipsis;
+							}
+
+							.price-box {
+								display: flex;
+								font-style: italic;
+								align-items: center;
+
+								.price {
+									font-size: 34rpx;
+									font-weight: bold;
+									margin-right: 20rpx;
+								}
+
+								.false-price {
+									color: #CACDD4;
+									text-decoration: line-through;
+								}
+							}
+						}
+					}
+				}
+
+				.message-name {
+					font-size: 32rpx;
+					font-weight: bold;
+				}
+
+				.message-text {
+					margin-top: 20rpx;
+					color: #bcbfc3;
+				}
+			}
+		}
+	}
+
+	.flex-end {
+		display: flex;
+		justify-content: flex-end;
+	}
+
+	.red-color {
+		color: #FF4B10;
+	}
+
+	::v-deep .u-border {
+		border-style: none !important;
+	}
+
+
+
+	.pop-box {
+		height: 850rpx;
+		background-color: #F4F4F4;
+		position: relative;
+
+		.pop-title {
+			font-weight: bold;
+			font-size: 36rpx;
+			text-align: center;
+			padding: 20rpx;
+			background: linear-gradient(to bottom, #fff, #fff, #F4F4F4);
+		}
+
+		.pop-coupon-box {
+			max-height: 650rpx;
+			overflow-y: scroll;
+		}
+
+		.pop-item {
+			padding: 20rpx;
+			margin-bottom: 10rpx;
+
+			.item-box {
+				padding: 20rpx;
+				border-radius: 20rpx 20rpx 0 0;
+				background-color: #fff;
+				display: flex;
+				align-items: center;
+				box-shadow: 0rpx 7rpx 20rpx 10rpx rgba(0, 0, 0, 0.1);
+				background-image: radial-gradient(circle at left bottom, #F4F4F4, #F4F4F4 40rpx, transparent 16rpx), radial-gradient(circle at right bottom, #F4F4F4, #F4F4F4 55rpx, transparent 16rpx), radial-gradient(circle at right top, #F4F4F4, #F4F4F4 35rpx, transparent 16rpx);
+
+				.item-left {
+					display: flex;
+					width: 70%;
+
+					.img-box,
+					.left-img {
+						width: 160rpx;
+						height: 160rpx;
+						border-radius: 20rpx;
+					}
+
+					.left-text {
+						margin-left: 20rpx;
+
+						.text-title {
+							font-size: 34rpx;
+							width: 350rpx;
+							white-space: nowrap;
+							overflow: hidden;
+							text-overflow: ellipsis;
+							color: #000;
+						}
+
+						.text {
+							font-size: 26rpx;
+							color: #666666;
+							margin-top: 10rpx;
+						}
+					}
+
+				}
+
+				.item-right {
+					text-align: center;
+					width: 30%;
+
+					.price {
+						font-size: 56rpx;
+
+						.price-symbol {
+							font-size: 24rpx;
+						}
+					}
+
+					.text {
+						color: #656565;
+						margin-top: 20rpx;
+					}
+				}
+			}
+
+			.item-bottom {
+				padding: 20rpx 50rpx 20rpx 30rpx;
+				background-color: #fff;
+				border-radius: 0 0 20rpx 20rpx;
+				box-shadow: 0rpx 10rpx 15rpx 0rpx rgba(0, 0, 0, 0.1);
+				background-image: radial-gradient(circle at left top, #F4F4F4, #F4F4F4 40rpx, transparent 16rpx), radial-gradient(circle at right top, #F4F4F4, #F4F4F4 55rpx, transparent 16rpx);
+				border-top: 1px dashed #F4F4F4;
+				color: #b1b4b9;
+				font-size: 26rpx;
+				font-style: oblique;
+				text-indent: 32.4px;
+			}
+		}
+
+		.pop-bottom {
+			position: absolute;
+			bottom: 0;
+			width: 100%;
+			display: flex;
+			justify-content: center;
+
+			.coupon-btn {
+				width: 100%;
+				background-color: #FFDE21 !important;
+				color: #000;
+				font-size: 28rpx;
+				// height:80rpx;
+				// line-height: 80rpx;
+				border-radius: 20rpx;
+			}
+		}
+	}
+
+
+
+	.btn-box {
+		width: 100%;
+		position: fixed;
+		bottom: 5%;
+
+		.btn {
+			width: 90%;
+			background: linear-gradient(to right, #1d4350, #a43931);
+			color: #fff;
+			border-radius: 40rpx;
+			text-align: center;
+			font-size: 32rpx;
+			padding: 20rpx;
+		}
+	}
+</style>

+ 76 - 0
src/pagesHome/marketer/settleStatus.vue

@@ -0,0 +1,76 @@
+<template>
+  <view class="container">
+    <view class="pay-box">
+      <image class="pay-img" src="@/static/images/paySuccess.png"></image>
+      <p class="pay-text">支付成功</p>
+    </view>
+
+    <view class="pay-btn-box">
+      <button class='btn btn1' @click='handlerSkipBtn(1)'>返回首页</button>
+      <button class='btn btn2' @click='handlerSkipBtn(2)'>查看订单</button>
+    </view>
+  </view>
+</template>
+
+<script>
+  export default {
+    data(){
+      return{
+
+      }
+    },
+    methods:{
+      handlerSkipBtn(e){
+        switch(e){
+          case 1 :
+            uni.switchTab({
+              url:"/pages/tabbar/home"
+            })
+          break ;
+          case 2 :
+            uni.switchTab({
+              url:"/pages/client/tabBar/mine/index"
+            })
+          break ;
+        }
+      }
+    }
+  }
+</script>
+
+<style lang="scss" scoped>
+  .container{
+    .pay-box{
+      text-align: center;
+      padding-top: 100rpx;
+      .pay-img{
+        width: 160rpx;
+        height: 160rpx;
+        border-radius: 50%;
+      }
+      .pay-text{
+        font-weight: bold;
+        font-size: 42rpx;
+        margin-top: 60rpx;
+      }
+    }
+    .pay-btn-box{
+      display: flex;
+      justify-content: space-evenly;
+      margin-top: 400rpx;
+      .btn{
+        width: 45%;
+        border-radius: 38rpx;
+        font-size:32rpx;
+      }
+      .btn1{
+        background-color: #7785DB;
+        color: #fff;
+      }
+      .btn2{
+        background-color: #FF6201;
+        color: #fff;
+      }
+    }
+  }
+</style>

BIN
src/static/default-graph/empty.png


BIN
src/static/default-graph/no-address.png


BIN
src/static/default-graph/no-business.png


BIN
src/static/default-graph/no-collect.png


BIN
src/static/default-graph/no-comment.png


BIN
src/static/default-graph/no-coupon.png


BIN
src/static/default-graph/no-goods.png


BIN
src/static/default-graph/no-msg.png


BIN
src/static/default-graph/no-order.png


BIN
src/static/default-graph/no-record.png


BIN
src/static/default-graph/no-search.png


BIN
src/static/default-graph/no-signal.png


+ 3 - 3
src/utils/request.js

@@ -95,14 +95,14 @@ instance.interceptors.response.use(
     // 未登录
     if (code === 'UNAUTHORIZED') {
       uni.navigateTo({
-        url: '/pages/login',
+        url: '/pages/login/login',
       });
       return res.data;
     }
     // 身份切换
     if (code === 'SCOPE_CHANGED') {
       uni.reLaunch({
-        url: '/pages/login',
+        url: '/pages/login/login',
       });
       uni.showToast({
         title: '您的身份信息已切换',
@@ -142,7 +142,7 @@ instance.interceptors.response.use(
           showCancel: false,
           success: res => {
             uni.navigateTo({
-              url: '/pages/login',
+              url: '/pages/login/login',
             });
           },
         });