Browse Source

添加本地生活模块, 底部tabbar栏改版

DaMowang 2 years ago
parent
commit
ab4049419e
67 changed files with 3556 additions and 167 deletions
  1. 39 0
      src/components/icon/icon.vue
  2. 4 4
      src/components/lcw-select-address/lcw-select-address.vue
  3. 5 1
      src/manifest.json
  4. 96 81
      src/pages.json
  5. 1 1
      src/pages/account/consignment.vue
  6. 2 2
      src/pages/account/conversion.vue
  7. 3 3
      src/pages/account/giveAsPresent.vue
  8. 1 1
      src/pages/accountDetails/integral.vue
  9. 1 1
      src/pages/accountDetails/running.vue
  10. 1 1
      src/pages/accountDetails/teaBaby.vue
  11. 1 1
      src/pages/accountDetails/topup.vue
  12. 1 1
      src/pages/accountDetails/withdraw.vue
  13. 1 1
      src/pages/agreement/index.vue
  14. 2 2
      src/pages/autonym-submit/index.vue
  15. 2 2
      src/pages/cash/index.vue
  16. 1 1
      src/pages/consultation-list/index.vue
  17. 3 3
      src/pages/index/index.vue
  18. 1 1
      src/pages/invi-img/index.vue
  19. 4 4
      src/pages/my-tea-list/index.vue
  20. 3 3
      src/pages/my/index.vue
  21. 3 3
      src/pages/my/login.vue
  22. 1 1
      src/pages/my/userinfo.vue
  23. 1 1
      src/pages/notice/detail.vue
  24. 171 0
      src/pages/orderingfood/merchantlist.vue
  25. 1204 0
      src/pages/orderingfood/orderingfood.vue
  26. 1 1
      src/pages/pay-agreement/index.vue
  27. 3 3
      src/pages/product/p_details.vue
  28. 1 1
      src/pages/product/productRetail.vue
  29. 1 1
      src/pages/product/productTeaBaby.vue
  30. 1 1
      src/pages/product/productWholesale.vue
  31. 1 1
      src/pages/protocol/index.vue
  32. 3 3
      src/pages/sign/index.vue
  33. 1 1
      src/pages/speed-up/index.vue
  34. 4 4
      src/pages/szw-order-details/index.vue
  35. 5 5
      src/pages/szw-order-list/index.vue
  36. 1 1
      src/pages/tea-list/index.vue
  37. 6 6
      src/pages/to-pay-list/index.vue
  38. 2 2
      src/pages/top-up/index.vue
  39. 2 2
      src/pages/xghc-addrress/userAddress.vue
  40. 1 1
      src/pagesB/accountDetails/TeaC.vue
  41. 2 2
      src/pagesB/address/list.vue
  42. 1 1
      src/pagesB/image-cropper/index.vue
  43. 1 1
      src/pagesB/invoice/Billingresult.vue
  44. 1 1
      src/pagesB/invoice/editinvoice.vue
  45. 1 1
      src/pagesB/invoice/invoiceList.vue
  46. 1 1
      src/pagesB/my/assistant.vue
  47. 1 1
      src/pagesB/order/verificationCode.vue
  48. 29 0
      src/pagesB/orderingfood/merchantlist.vue
  49. 1928 0
      src/pagesB/orderingfood/orderingfood.vue
  50. 4 4
      src/request/config.js
  51. BIN
      src/static/img/load.gif
  52. BIN
      src/static/nav/benefits.png
  53. BIN
      src/static/nav/benefits_.png
  54. BIN
      src/static/nav/home.png
  55. BIN
      src/static/nav/home_.png
  56. BIN
      src/static/nav/local.png
  57. BIN
      src/static/nav/local_.png
  58. BIN
      src/static/nav/my.png
  59. BIN
      src/static/nav/my_.png
  60. BIN
      src/static/nav/qiandao.png
  61. BIN
      src/static/nav/qiandao_select.png
  62. BIN
      src/static/nav/shouye.png
  63. BIN
      src/static/nav/shouye_select.png
  64. BIN
      src/static/nav/wode.png
  65. BIN
      src/static/nav/wode_select.png
  66. 0 0
      src/static/utils/qqmap-wx-jssdk.min.js
  67. 2 3
      src/utils/run_now.js

File diff suppressed because it is too large
+ 39 - 0
src/components/icon/icon.vue


+ 4 - 4
src/components/lcw-select-address/lcw-select-address.vue

@@ -363,7 +363,7 @@ export default {
 		},
 		// 省份数据获取
 		getProvinvial() {
-			post('user/areaConfig',{type:'provinces'}).then(res=>{
+			post('v1/user/areaConfig',{type:'provinces'}).then(res=>{
 				if(res.code == 0){
 					let da = res.data.data
 					// let da = JSON.parse(res.data.data)
@@ -385,7 +385,7 @@ export default {
 		},
 		// 城市数据获取
 		getCity() {
-			post('user/areaConfig',{type:'cities'}).then(res=>{
+			post('v1/user/areaConfig',{type:'cities'}).then(res=>{
 				if(res.code == 0){
 					let da = res.data.data
 					// let da = JSON.parse(res.data.data)
@@ -417,7 +417,7 @@ export default {
 		},
 		// 区县数据
 		getArea() {
-			post('user/areaConfig',{type:'areas'}).then(res=>{
+			post('v1/user/areaConfig',{type:'areas'}).then(res=>{
 				if(res.code == 0){
 					let da = res.data.data
 					// let da = JSON.parse(res.data.data)
@@ -449,7 +449,7 @@ export default {
 		},
 		// 镇 社区
 		getStreets() {
-			post('user/areaConfig',{type:'streets'}).then(res=>{
+			post('v1/user/areaConfig',{type:'streets'}).then(res=>{
 				if(res.code == 0){
 					let da = res.data.data
 					// let da = JSON.parse(res.data.data)

+ 5 - 1
src/manifest.json

@@ -65,7 +65,11 @@
             "minified" : true
         },
         "usingComponents" : true,
-        "permission" : {},
+        "permission": {
+            "scope.userLocation": {
+                "desc": "你的位置信息将用于搜索附近商家"
+            }
+        },
         "requiredPrivateInfos" : [ "chooseLocation", "getLocation", "chooseAddress" ]
     },
     "mp-alipay" : {

+ 96 - 81
src/pages.json

@@ -24,6 +24,19 @@
 		// 		"navigationBarTitleText": "联盟店"
 		// 	}
 		// },
+		{
+			"path": "pages/orderingfood/merchantlist",
+			"style": {
+				"navigationBarTitleText": "本地生活",
+				"onReachBottomDistance": 200
+			}
+		},
+		{
+			"path": "pages/orderingfood/orderingfood",
+			"style": {
+				"navigationBarTitleText": "本地生活"
+			}
+		},
 		{
 			"path": "pages/my/index",
 			"style": {
@@ -236,74 +249,76 @@
 			}
 		}
 	],
-	"subPackages": [{
-		"root": "pagesB",
-		"pages": [
-			{
-			    "path" : "test/index",
-			    "style" : {
-					"navigationBarTitleText": "测试"
-				}
-			},
-			{
-			    "path" : "order/verificationCode",
-			    "style" : {
-					"navigationBarTitleText": "核销码"
-				}
-			},
-			{
-				"path": "my/assistant",
-				"style": {
-					"navigationBarTitleText": "开票助手",
-					"onReachBottomDistance": 50
-				}
-			},
-			{
-				"path": "invoice/editinvoice",
-				"style": {
-					"navigationBarTitleText": "填写发票信息"
-				}
-			},
-			{
-				"path": "invoice/invoiceList",
-				"style": {
-					"navigationBarTitleText": "已开票"
+	"subPackages": [
+		{
+			"root": "pagesB",
+			"pages": [
+				{
+					"path": "test/index",
+					"style": {
+						"navigationBarTitleText": "测试"
+					}
+				},
+				{
+					"path": "order/verificationCode",
+					"style": {
+						"navigationBarTitleText": "核销码"
+					}
+				},
+				{
+					"path": "my/assistant",
+					"style": {
+						"navigationBarTitleText": "开票助手",
+						"onReachBottomDistance": 50
+					}
+				},
+				{
+					"path": "invoice/editinvoice",
+					"style": {
+						"navigationBarTitleText": "填写发票信息"
+					}
+				},
+				{
+					"path": "invoice/invoiceList",
+					"style": {
+						"navigationBarTitleText": "已开票"
+					}
+				},
+				{
+					"path": "invoice/Billingresult",
+					"style": {
+						"navigationBarTitleText": "开票结果"
+					}
+				},
+				{
+					"path": "accountDetails/TeaC",
+					"style": {
+						"navigationBarTitleText": "TeaC明细"
+					}
+				},
+				{
+					"path": "address/list",
+					"style": {
+						"navigationBarTitleText": "我的收货地址"
+					}
+				},
+				{
+					"path": "address/addaddress",
+					"style": {
+						"navigationBarTitleText": "添加收货地址"
+					}
+				},
+				{
+					"path": "image-cropper/index",
+					"style": {
+						"navigationBarTitleText": "个人头像",
+						"enablePullDownRefresh": false,
+						"disableScroll": true
+					}
 				}
-			},
-			{
-				"path": "invoice/Billingresult",
-				"style": {
-					"navigationBarTitleText": "开票结果"
-				}
-			},
-			{
-				"path": "accountDetails/TeaC",
-				"style": {
-					"navigationBarTitleText": "TeaC明细"
-				}
-			},
-			{
-				"path": "address/list",
-				"style": {
-					"navigationBarTitleText": "我的收货地址"
-				}
-			},
-			{
-				"path": "address/addaddress",
-				"style": {
-					"navigationBarTitleText": "添加收货地址"
-				}
-			},
-			{
-				"path": "image-cropper/index",
-				"style": {
-					"navigationBarTitleText": "个人头像",
-					"enablePullDownRefresh": false,
-					"disableScroll": true
-				}
-			}
-		 ]
-	}],
+			]
+		}
+	],
 	// "preloadRule": {
 	// 	"pages/index/index": {
 	// 		"network": "all",
@@ -311,33 +326,33 @@
 	// 	}
 	// },
 	"tabBar": {
-		"color": "#18bb88",
-		"selectedColor": "#999",
+		"color": "#999",
+		"selectedColor": "#18bb88",
 		"borderStyle": "black",
 		"backgroundColor": "#ffffff",
 		"list": [
 			{
 				"pagePath": "pages/index/index",
-				"iconPath": "static/nav/shouye.png",
-				"selectedIconPath": "static/nav/shouye_select.png",
+				"iconPath": "static/nav/home_.png",
+				"selectedIconPath": "static/nav/home.png",
 				"text": "首页"
 			},
 			{
 				"pagePath": "pages/sign/index",
-				"iconPath": "static/nav/qiandao.png",
-				"selectedIconPath": "static/nav/qiandao_select.png",
+				"iconPath": "static/nav/benefits_.png",
+				"selectedIconPath": "static/nav/benefits.png",
 				"text": "福利"
 			},
-			// {
-			// 	"pagePath": "pages/partner/index",
-			// 	"iconPath": "static/nav/hehuoren.png",
-			// 	"selectedIconPath": "static/nav/hehuoren_select.png",
-			// 	"text": "联盟店"
-			// },
+			{
+				"pagePath": "pages/orderingfood/merchantlist",
+				"iconPath": "static/nav/local_.png",
+				"selectedIconPath": "static/nav/local.png",
+				"text": "本地生活"
+			},
 			{
 				"pagePath": "pages/my/index",
-				"iconPath": "static/nav/wode.png",
-				"selectedIconPath": "static/nav/wode_select.png",
+				"iconPath": "static/nav/my_.png",
+				"selectedIconPath": "static/nav/my.png",
 				"text": "我的"
 			}
 		]

+ 1 - 1
src/pages/account/consignment.vue

@@ -74,7 +74,7 @@ import uniPopup from '@/components/uni-popup/uni-popup.vue'
 					type: this.current,
 					page: page
 				}
-                post("goods/consignment",data).then(res => {
+                post("v1/goods/consignment",data).then(res => {
                     if(res.code === 0){
                         let obj = res.data.data.data
                         if(obj.length>0){

+ 2 - 2
src/pages/account/conversion.vue

@@ -47,7 +47,7 @@ export default {
   onHide() {},
   methods: {
     getMoneyChabao() {
-      post("moneyChabao").then((res) => {
+      post("v1/moneyChabao").then((res) => {
         this.fee = res.data.data.fee;
         this.tips = res.data.data.tips;
       });
@@ -81,7 +81,7 @@ export default {
       let data = {
         number: this.give_num,
       };
-      post("my/moneyTurn", data).then( async (res) => {
+      post("v1/my/moneyTurn", data).then( async (res) => {
         if (res.code === 0) {
           this.give_num = undefined;
           this.userinfo = await uni.userfun();

+ 3 - 3
src/pages/account/giveAsPresent.vue

@@ -73,7 +73,7 @@ export default {
   },
   methods: {
     getGiveList() {
-      post("giveRate").then((res) => {
+      post("v1/giveRate").then((res) => {
         this.list = res.data.data;
       });
     },
@@ -134,7 +134,7 @@ export default {
         mobile: this.id,
         number: this.give_num,
       };
-      post("my/give", data).then((res) => {
+      post("v1/my/give", data).then((res) => {
         if (res.code === 0) {
           this.give_num = 0;
           this.id = "";
@@ -151,7 +151,7 @@ export default {
         mobile: this.id,
         number: this.give_num,
       };
-      post("my/moneyGive", data).then((res) => {
+      post("v1/my/moneyGive", data).then((res) => {
         if (res.code === 0) {
           this.give_num = 0;
           this.id = "";

+ 1 - 1
src/pages/accountDetails/integral.vue

@@ -67,7 +67,7 @@ export default {
         limit: 10,
       };
       uni.showLoading({ mask: true });
-      post("/my/integral", data).then((res) => {
+      post("v1/my/integral", data).then((res) => {
         uni.hideLoading();
         if (res.code === 0) {
           if (res.data.data.data.length > 0) {

+ 1 - 1
src/pages/accountDetails/running.vue

@@ -65,7 +65,7 @@ export default {
         type: this.current,
       };
       uni.showLoading({ mask: true });
-      post("my/moneylog", data).then((res) => {
+      post("v1/my/moneylog", data).then((res) => {
         uni.hideLoading();
         if (res.code === 0) {
           if (res.data.data.data.length > 0) {

+ 1 - 1
src/pages/accountDetails/teaBaby.vue

@@ -65,7 +65,7 @@ export default {
         limit: 10
       };
       uni.showLoading({ mask: true });
-      post("/my/chabao", data).then(res => {
+      post("v1/my/chabao", data).then(res => {
         uni.hideLoading();
         if (res.code === 0) {
           if (res.data.data.data.length > 0) {

+ 1 - 1
src/pages/accountDetails/topup.vue

@@ -45,7 +45,7 @@ export default {
         rows:20
       };
       uni.showLoading({ mask: true });
-      post("/my/recharge", data).then((res) => {
+      post("v1/my/recharge", data).then((res) => {
         uni.hideLoading();
         if (res.code === 0) {
           if (res.data.data.data.length > 0) {

+ 1 - 1
src/pages/accountDetails/withdraw.vue

@@ -80,7 +80,7 @@ export default {
         rows: this.rows,
       };
       uni.showLoading({ mask: true });
-      post("/my/withdraw", data).then((res) => {
+      post("v1/my/withdraw", data).then((res) => {
         uni.hideLoading();
         if (res.code === 0) {
           if (res.data.data.data.length > 0) {

+ 1 - 1
src/pages/agreement/index.vue

@@ -19,7 +19,7 @@ export default {
   },
   methods: {
     loadData(type) {
-      post("/my/article", {type}).then((res) => {
+      post("v1/my/article", {type}).then((res) => {
         if (res.code == 0) {
           this.content = res.data.data.content;
         }

+ 2 - 2
src/pages/autonym-submit/index.vue

@@ -77,7 +77,7 @@
 					trade_type: type,
 					amount:this.amount
 				};
-				post("/user/authentication", data).then(res => {
+				post("v1/user/authentication", data).then(res => {
 					if (res.code === 0) {
 						uni.redirectTo({
 							url: "/pages/autonym-pay/index?amount=" + this.amount + '&payDetail=' + encodeURIComponent(JSON.stringify(res.data.data)),
@@ -90,7 +90,7 @@
 				});
 			},
 			loadData(){
-				post('/user/isPayAuth').then(res => {
+				post('v1/user/isPayAuth').then(res => {
 					if(res.code === 0){
 						this.amount = res.data.amount
 					}

+ 2 - 2
src/pages/cash/index.vue

@@ -73,7 +73,7 @@ export default {
   },
   methods: {
     getExolain(){
-      post('/withdrawdesc').then(res => {
+      post('v1/withdrawdesc').then(res => {
         this.show = res.data.data[0]
       })
     },
@@ -102,7 +102,7 @@ export default {
         pay_code: this.imgs,
         w_type: 1,
       };
-      post("/user/withdraw", data).then( async (res) => {
+      post("v1/user/withdraw", data).then( async (res) => {
         uni.hideLoading();
         if (res.code === 0) {
           this.inputMoney = "";

+ 1 - 1
src/pages/consultation-list/index.vue

@@ -33,7 +33,7 @@ export default {
       let data = {
         is_index: 0
       }
-      post('/notice',data).then(res => {
+      post('v1/notice',data).then(res => {
             if(res.code === 0){
                 this.list = res.data.data
             }

+ 3 - 3
src/pages/index/index.vue

@@ -130,7 +130,7 @@ export default {
     onHide() {},
     methods: {
         loadData() {
-            post("goods/indexGoods").then((res) => {
+            post("v1/goods/indexGoods").then((res) => {
                 if (res.code === 0) {
                     this.productList = res.data.data;
                 }
@@ -145,7 +145,7 @@ export default {
         },
         // 获取轮播图
         getBanner() {
-            post("banner").then((res) => {
+            post("v1/banner").then((res) => {
                 if (res.code === 0) {
                     this.BannerImg = [];
                     res.data.data.forEach((e) => {
@@ -159,7 +159,7 @@ export default {
             let data = {
                 is_index: 1
             }
-            post("notice", data).then((res) => {
+            post("v1/notice", data).then((res) => {
                 if (res.code === 0) {
                     this.not_list = res.data.data;
                 }

+ 1 - 1
src/pages/invi-img/index.vue

@@ -96,7 +96,7 @@ export default {
   methods: {
     loadData() {
       uni.showLoading({ mask: true });
-      post("user/xcxqrcode").then((res) => {
+      post("v1/user/xcxqrcode").then((res) => {
         uni.hideLoading();
         if (res.code === 0) {
           this.bgImgList = res.data.data.list;

+ 4 - 4
src/pages/my-tea-list/index.vue

@@ -101,7 +101,7 @@ export default {
     },
     methods: {
         loadData() {
-            post("/my/chayou").then((res) => {
+            post("v1/my/chayou").then((res) => {
                 if (res.code === 0) {
                     this.higherInfo = res.data.data.superior;
                     this.myTeaFriendNum = res.data.data.below;
@@ -112,21 +112,21 @@ export default {
         },
 
         getmyChayoyTotal() {
-            post("/my/myChayoyTotal").then((res) => {
+            post("v1/my/myChayoyTotal").then((res) => {
                 if (res.code === 0) {
                     this.myChayoyTotal = res.data.data;
                 }
             });
         },
         getmyChayoyDirect() {
-            post("/my/myChayoyDirect").then((res) => {
+            post("v1/my/myChayoyDirect").then((res) => {
                 if (res.code === 0) {
                     this.myChayoyDirect = res.data.data;
                 }
             });
         },
         getmyChayoyIndirect() {
-            post("/my/myChayoyIndirect").then((res) => {
+            post("v1/my/myChayoyIndirect").then((res) => {
                 if (res.code === 0) {
                     this.myChayoyIndirect = res.data.data;
                 }

+ 3 - 3
src/pages/my/index.vue

@@ -252,7 +252,7 @@ export default {
       wx.login({
         success(res) {
           if (res.code) {
-            post("appletLogin", {
+            post("v1/appletLogin", {
               code: res.code,
               invite: that.invited,
             }).then((res) => {
@@ -279,7 +279,7 @@ export default {
     // 获取手机号
     onauthGetTelSuccess(da) {
       this.showAuth = false;
-      post("getMobile", {
+      post("v1/getMobile", {
         unid: this.unid,
         ...da.detail,
       }).then((res) => {
@@ -386,7 +386,7 @@ export default {
     },
     // 获取茶友
     getchayou() {
-      post("my/chayou").then((res) => {
+      post("v1/my/chayou").then((res) => {
         if (res.code === 0) {
           this.allChaYou = res.data.data.below + res.data.data.lower_level;
         }

+ 3 - 3
src/pages/my/login.vue

@@ -81,7 +81,7 @@ export default {
                 });
                 return
             }
-            post("login",this.formD2).then((res) => {
+            post("v1/login",this.formD2).then((res) => {
                 if (res.code === 0) {
                     uni.setStorageSync('token', res.data.token);
                     this.getuserInfo();
@@ -89,7 +89,7 @@ export default {
             });
         },
         getuserInfo() {
-            post("user/userinfo").then((res) => {
+            post("v1/user/userinfo").then((res) => {
                 if (res.code === 0) {
                     uni.setStorageSync('userinfo', res.data.data);
 
@@ -113,7 +113,7 @@ export default {
                 appEv.errTips("手机号填写有误!");
                 return
             }
-            post("getSms", {
+            post("v1/getSms", {
                 mobile: this.formD2.mobile
             }).then((res) => {
                 if (res.code === 0) {

+ 1 - 1
src/pages/my/userinfo.vue

@@ -48,7 +48,7 @@ export default {
             });
         },
         upda() {
-            post("user/setup", this.formDa).then((res) => {
+            post("v1/user/setup", this.formDa).then((res) => {
                 if (res.code === 0) {
                     appEv.errTips(res.msg);
                     this.getuserInfo();

+ 1 - 1
src/pages/notice/detail.vue

@@ -35,7 +35,7 @@ export default {
       let data = {
         article_id: id,
       };
-      post("notice", data).then((res) => {
+      post("v1/notice", data).then((res) => {
         if (res.code == 0) {
           this.noticeDetail = res.data.data;
         }

+ 171 - 0
src/pages/orderingfood/merchantlist.vue

@@ -0,0 +1,171 @@
+<template>
+  <div class="merchantlist">
+    <div class="head"></div>
+    <div class="list">
+      <div class="li_item" v-for="(i,s) in merchantList" :key="s" @click="goMerchant(i)">
+        <div class="logo_img">
+          <img src="http://teaclub.oss-cn-chengdu.aliyuncs.com/CloudShop/head_pic/4820537f88796ee05a37530be80976921979f7f9png" alt="">
+        </div>
+        <div class="con_box">
+          <div class="p1 ellipsis">{{ i.restaurant_name }}</div>
+          <div class="p2">{{ i.restaurant_address }}</div>
+          <div class="p3">{{ $h.Div(i.distance, 1000).toFixed(2) }} km</div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import { post } from "@/request/api.js";
+	import QQMapWX from '@/static/utils/qqmap-wx-jssdk.min.js'
+export default {
+  name: "merchantlist",
+  props: {},
+  components: {},
+  data() {
+    return {
+      Query: {
+        lat: 113.9367,
+        lng: 22.5325,
+        page: 1,
+        rows: 20
+      },
+      merchant: {},
+      merchantList: [],
+    };
+  },
+  methods: {
+    getlists(){
+      post("local/getMerchant",this.Query).then(res => {
+        if(res.code == 0){
+          let merchantList = res.data.data
+          delete res.data.data
+          this.merchant = res.data
+          this.merchantList = [ ...this.merchantList, ...merchantList ]
+          this.Query.page++
+        }
+      })
+    },
+		// 获取当前位置
+		getLocation() {
+			const that = this;
+			// 获取位置信息
+			uni.getLocation({
+				type: 'wgs84',
+				success(res) {
+					// 经纬度转化地址信息
+					// const qqmap = require('@/pages/qqmap-wx-jssdk.min.js');
+					const showmap = new QQMapWX({
+						key: 'NWSBZ-ZUME4-LLTU6-XSQGB-YBKAT-U4FCZ'
+					});
+					// 逆地址解析reverseGeocoder
+					showmap.reverseGeocoder({
+						location: {
+							latitude: res.latitude,
+							longitude: res.longitude
+						},
+						success(result) {
+							const adres = result.result.location;
+              that.Query = { ...that.Query, ...adres };
+              that.getlists();
+						}
+					});
+				},
+				fail(e) {
+					let errMsgTit = '';
+					if (e.errMsg === 'getLocation:fail auth deny') {
+						errMsgTit = '你已拒绝授权,是否跳转至设置页面开启权限';
+					} else {
+						errMsgTit = '操作频繁提示,建议搭配onLocationChange()使用';
+					}
+					uni.showModal({
+						title: '提示',
+						content: `${errMsgTit}`,
+						success(res) {
+							if (res.confirm) {
+								// 获取设置页面权限信息
+								uni.getSetting({
+									success(res) {
+										console.log(res.authSetting);
+										// 判断是否开启获取位置权限
+										if (!res.authSetting['scope.userLocation']) {
+											// 如果没有开启,点击确认后打开设置页面
+											uni.openSetting({});
+										}
+									}
+								});
+								console.log('用户点击确定');
+							} else if (res.cancel) {
+								console.log('用户点击取消');
+							}
+						}
+					});
+				}
+			});
+		},
+    goMerchant(da) {
+      uni.setStorageSync("MerchantItem",da)
+      this.goto("/pages/orderingfood/orderingfood",{
+        brand_id:da.brand_id,
+        restaurant_id:da.restaurant_id
+      })
+    }
+  },
+  onLoad(da) {
+    this.getLocation();
+  },
+  onShow() {},
+  mounted() {},
+  onReachBottom() {
+    if(this.Query.page < this.merchant.last_page) this.getlists();
+  },
+};
+</script>
+
+<style scoped lang='scss'>
+.list{
+  padding: 30rpx;
+  .li_item{
+    margin-bottom: 20rpx;
+    padding: 28rpx 32rpx;
+    background-color: #fff;
+    border-radius: 10rpx;
+    box-shadow: 4rpx 4rpx 26rpx 2rpx rgba(17, 18, 29, 0.1);
+  }
+  .logo_img,.con_box{
+    display: inline-block;
+    vertical-align: top;
+  }
+  .logo_img{
+    img{
+      height: 180rpx;
+      width: 180rpx;
+      border-radius: 10rpx;
+    }
+  }
+  .con_box{
+    height: 180rpx;
+    width: calc(100% - 180rpx - 28rpx);
+    margin-left: 28rpx;
+    position: relative;
+    .p1{
+      font-size: 32rpx;
+      font-weight: bold;
+      color: #333;
+      margin-bottom: 6rpx;
+    }
+    .p2{
+      font-size: 24rpx;
+      color: #999;
+    }
+    .p3{
+      font-size: 24rpx;
+      color: #666;
+      position: absolute;
+      right: 0;
+      bottom: 0;
+    }
+  }
+}
+</style>

+ 1204 - 0
src/pages/orderingfood/orderingfood.vue

@@ -0,0 +1,1204 @@
+<template>
+    <view class="content">
+        <block v-if="loading">
+            <view class="loadingBox">
+                <view class="loading">
+                    <image lazy-load :src="template.overall.loading"></image>
+                </view>
+            </view>
+        </block>
+        <block v-else>
+            <view class="header">
+                <view class="left">
+                    <view class="title" :style="'color:'+template.color.color2">{{MerchantInfo.restaurant_name}}</view>
+                    <view v-if="distance" class="address" :style="'color:'+template.color.color3">距离您 {{(distance/1000)>1?distance/1000+'千米':distance+'米'}}</view>
+                    <view v-else class="address" :style="'color:'+template.color.color3">{{MerchantInfo.restaurant_address}}</view>
+                </view>
+                <view class="right">
+					
+                </view>
+            </view>
+            <view style="height: 130rpx;"></view>
+            <view class="goodsBox">
+                <view class="left">
+                    <scroll-view scroll-y scroll-with-animation class="menuList">
+                        <view class="menu" :class="menuCurrent==index?'active':''" :style="menuCurrent==index?'color:'+template.color.color2+';border-color:'+template.color.color1:'color:'+template.color.color3" @click="selectMenuTap(index)" v-for="(item, index) in goodsAllList" :key="index">{{item.title}}</view>
+                        <view style="height: 200rpx;"></view>
+                    </scroll-view>
+                </view>
+                <view class="right">
+                    <scroll-view scroll-y scroll-with-animation :scroll-into-view="goodsInto" class="goodList">
+                        <!-- <view v-if="swiperList.length>0" class="swiperBpx">
+							<swiper class="swiper" circular autoplay interval="6000" duration="500" @change="swiperChange">
+								<swiper-item v-for="(item, index) in swiperList" :key="index" @click="getBannerTap(item.target_data)">
+									<image lazy-load="true" mode="aspectFill" :src="item.pic" />
+								</swiper-item>
+							</swiper>
+							<view class="swiperDots">
+								<block v-for="(item, index) in swiperList" :key="index">
+									<view class="dot" :class="swiperCurrent==index?'active':''"></view>
+								</block>
+							</view>
+						</view> -->
+                        <view id="goodsQuery" v-for="(item, index) in goodsAllList" :key="index">
+                            <view class="goodsList" :id="'gory-'+index">
+                                <view class="gheader" :style="'color:'+template.color.color2">{{item.title}}</view>
+                                <view class="goods lineBottom" v-for="(itm, idx) in item.goods" :key="idx" @click="getDteailsTap(index, idx)">
+                                    <view class="left">
+                                        <view class="image">
+                                            <img :src="itm.product_img" class="product_img" alt="">
+                                            <icon v-if="itm.recom_status" class="icon" type="hot" size="30" color="#d3aa79"></icon>
+                                            <view v-if="itm.stock_number==0" class="none" :style="'color:'+template.color.color5">已售罄</view>
+                                        </view>
+                                    </view>
+                                    <view class="right">
+                                        <view class="title" :style="'color:'+template.color.color2">{{itm.product_name}}</view>
+                                        <view class="intro" :style="'color:'+template.color.color3">{{itm.product_description || ""}}</view>
+                                        <view class="box">
+                                            <view class="price" :style="'color:'+template.color.color1">¥{{itm.product_price}}</view>
+                                            <view class="button">
+                                                <block v-if="openStoreStatus">
+                                                    <block v-if="itm.product_choose">
+                                                        <view class="text" :style="'background-color:'+template.color.color5">选规格</view>
+                                                    </block>
+                                                    <block v-else>
+                                                        <icon type="jia" size="23" :color="template.color.color5"></icon>
+                                                    </block>
+                                                </block>
+                                                <block v-else>
+                                                    <view v-if="itm.product_choose" class="text" :style="'background-color:'+template.color.color5">选规格</view>
+                                                    <icon v-else type="jia" size="23" :color="template.color.color5"></icon>
+                                                </block>
+                                            </view>
+                                        </view>
+                                    </view>
+                                </view>
+                            </view>
+                        </view>
+                        <view style="height: 150rpx;"></view>
+                    </scroll-view>
+                </view>
+            </view>
+            <!-- 购物袋 - 底部栏 -->
+            <view v-if="openStoreStatus && cartList.length>0" class="footer" :class="IphoneX>=0?'footerX':''">
+                <view class="left">
+                    <view class="cart" @click="cartShow=!cartShow" :style="'color:'+template.color.color2">
+                        <icon type="liwu" size="18" color="#343434"></icon>购物袋<text :style="'background-color:'+template.color.color1">{{cartNumber}}</text>
+                    </view>
+                    <view class="price" :style="'color:'+template.color.color2">¥{{cartTotal}}</view>
+                </view>
+                <view class="right">
+					<view v-if="cartNumber>0" class="button" @click="toPaypalTap()" :style="'background-color:'+template.color.color1">去结算</view>
+					<view v-else class="button none" :style="'background-color:'+template.color.color5">去结算</view>
+                </view>
+            </view>
+            <!-- 购物袋 - 弹窗列表 -->
+            <view v-if="cartShow && cartList.length>0" class="showPopBox" style="z-index: 898;">
+                <view class="bg" @click="cartShow=false"></view>
+                <view class="showContent" :style="IphoneX>=0?'bottom:146rpx;':''">
+                    <view class="sheade">
+                        <view class="left">
+                            <view class="text">共{{cartNumber}}件商品</view>
+                        </view>
+                        <view class="right">
+                            <view class="text" @click="delNoneCartTap()"><icon type="shanchu" size="14"/>清空购物袋</view>
+                        </view>
+                    </view>
+                    <view class="sconten" :style="IphoneX>=0?'padding-bottom:146rpx;':'padding-bottom: 120rpx;'">
+                        <view class="goods" v-for="(item, index) in cartList" :key="index" :style="cartList.length==(index+1)?'border-bottom: none;':''">
+                            <view class="left">
+                                <view class="title">{{item.product_name}}</view>
+                                <view class="label" v-if="item.spec">
+                                    <text v-for="(value, name) in item.spec.selectSpecification" :key="name" class="good_spec">{{value}}</text>
+                                </view>
+                            </view>
+                            <view class="right">
+                                <view class="price">¥{{$h.Add(item.user_price, item.spec_price)}}</view>
+                                <view class="buy">
+                                    <icon type="jian" @click="editGoods(item, 'jian')" size="23" :color="item.number==1?'#cccccc':'#d3aa79'"></icon>
+                                    <input type="number" :value="item.number" disabled />
+                                    <icon type="jia" @click="editGoods(item, 'jia')" size="23" color="#d3aa79"></icon>
+                                    <!-- <block v-if="item.shelve_status">
+										<block v-if="item.stock_number">
+											<icon type="jian" @click="editGoods(item, 'jian')" size="23" :color="item.num==1?'#cccccc':'#d3aa79'"></icon>
+											<input type="number" :value="item.num" disabled />
+											<icon type="jia" @click="editGoods(item, 'jia')" size="23" :color="item.num>=item.stock_number?'#cccccc':'#d3aa79'"></icon>
+										</block>
+										<block v-else>
+											<text>商品已售罄</text>
+										</block>
+									</block>
+									<block v-else>
+										<text>商品已下架</text>
+									</block> -->
+                                </view>
+                            </view>
+                        </view>
+                    </view>
+                </view>
+            </view>
+            <view v-if="!openStoreStatus" class="footer" :class="IphoneX>=0?'footerX':''" style="overflow: hidden;">
+                <view class="label" :style="'background-color:'+template.color.color2">本店已休息,营业时间:{{openStoreTime}}</view>
+            </view>
+			<!-- 选规格-看详情 -->
+            <view v-if="goodShow" class="showPopBox" style="display: flex;align-items: center;justify-content: center;">
+                <view class="bg" @click="goodShow=false"></view>
+                <view class="goodsConten">
+                    <view class="image">
+                        <image :src="goodsOneData.product_img" lazy-load mode="aspectFit"></image>
+                        <icon @click="goodShow=false" type="close" size="25" :color="template.color.color5" style="top: 10rpx; right: 10rpx;"></icon>
+                    </view>
+                    <view class="title" :style="'color:'+template.color.color2">{{goodsOneData.product_name}}</view>
+                    <scroll-view scroll-y class="moreBox" style="max-height: 500rpx;">
+                        <view class="label" v-for="(item, index) in goodsOneData.details.optional" :key="index">
+                            <view class="stitle"><text>{{item.name}}</text></view>
+                            <view class="specBox">
+                                <view class="spec" :style="itm.active?'background-color:'+template.color.color1+';border-color:'+template.color.color1:''" :class="itm.active?'active':''" @click="selectSpecsTap(index, idx)" v-for="(itm, idx) in item.sku_infos" :key="idx">{{itm.name + (itm.price ? ` +${itm.price}` : "")}}</view>
+                            </view>
+                        </view>
+                        <view class="more" v-if="goodsOneData.product_description">
+                            <view class="labtit" :style="'color:'+template.color.color3">产品介绍</view>
+                            <view class="intro" :style="'color:'+template.color.color3">{{goodsOneData.product_description}}</view>
+                        </view>
+                    </scroll-view>
+                    <view class="gfooter">
+                        <view class="price">
+                            <view class="left">
+                                <view v-if="childProductData.spec_price" class="text" :style="'color:'+template.color.color1">¥{{childProductData.spec_price + goodsOneData.user_price}}<text :style="'color:'+template.color.color3" v-if="goodsOneData.product_price">¥{{childProductData.spec_price + goodsOneData.product_price}}</text></view>
+                                <view v-else class="text" :style="'color:'+template.color.color1">¥{{goodsOneData.user_price}}<text :style="'color:'+template.color.color3" v-if="goodsOneData.product_price">¥{{goodsOneData.product_price}}</text></view>
+                                <view class="label" v-if="childProductData.selectSpecification" :style="'color:'+template.color.color3">
+                                    <text v-for="(value, name) in childProductData.selectSpecification" :key="name" class="good_spec">{{value}} </text>
+                                </view>
+                            </view>
+                            <view class="right">
+                                <view class="buy">
+                                    <icon type="jian" @click="editGoodsOne('jian')" size="23" :color="buyNumber<=1?template.color.color5:template.color.color1"></icon>
+                                    <input type="number" :value="buyNumber" disabled :style="'color:'+template.color.color2" />
+                                    <icon type="jia" @click="editGoodsOne('jia')" size="23" :color="template.color.color5"></icon>
+                                </view>
+                            </view>
+                        </view>
+                        <block v-if="openStoreStatus">
+                                <view class="button" @click="addShopCar()" :style="'background-color:'+template.color.color1">加入购物袋</view>
+                            <!-- <view v-else class="button none" :style="'background-color:'+template.color.color5">{{goodsOneData.stock_number===0?'商品已售罄':'加入购物袋'}}</view> -->
+                        </block>
+                        <block v-else>
+                            <view class="button none" :style="'background-color:'+template.color.color5">本店已休息</view>
+                        </block>
+                    </view>
+                </view>
+            </view>
+        </block>
+    </view>
+</template>
+<script>
+import Icon from "@/components/icon/icon.vue";
+import QQMapWX from '@/static/utils/qqmap-wx-jssdk.min.js'
+import { post } from "@/request/api.js";
+const app = getApp();
+console.log('app', app);
+export default {
+    components: { Icon },
+    props: {
+        goods: {
+            type: Number,
+            default: 0,
+        },
+    },
+    data() {
+        return {
+            loading: true,
+            IphoneX: this.IphoneX,
+            template: {
+                color: {
+                    color1: "#d3aa79",
+                    color2: "#323232",
+                    color3: "#999",
+                    color5: "#d3aa79"
+                }
+            },
+            // MerchantInfo: uni.getStorageSync('__yipinShopInfo'),
+            userData: uni.getStorageSync('__yipinUserInfo'),
+            goodsHeight: 812,
+            menuCurrent: 0,
+            menuList: [],
+            swiperCurrent: 0,
+            swiperList: [],
+            page: 1,
+            goodsListData: {
+                page: 1,
+                total: 0,
+                list: []
+            },
+            cartTotal: 0,
+            cartNumber: 0,
+            cartList: [],
+            goodsOneData: '',
+            buyNumber: 1,
+            buyNumMax: 100,
+            canSubmit: false,
+            childProductData: {},
+            // buyActive: false,
+            cartShow: false,
+            infoShow: false,
+            goodShow: false,
+            goodsInto: '',
+            goodsAllList: [],
+            heightArr: [],
+            distance: 0,
+            haibaoStu: false,
+            haibaoImg: '',
+            shareShow: false,
+            openStoreStatus: true,
+            openStoreTime: '',
+            couponsList: [],
+            couponsShow: false,
+            MerchantInfo: uni.getStorageSync("MerchantItem"),
+        }
+    },
+    onReady() {
+		this.distance = this.MerchantInfo.distance.toFixed(2);
+        this.getCartList();
+    },
+    onLoad(da) {
+        const res = uni.getSystemInfoSync();
+        this.goodsHeight = this.IphoneX >= 0 ? res.windowHeight - 138 : res.windowHeight - 125
+        this.getGoodsAllList(da)
+    },
+    methods: {
+		// 获取当下店铺所有商品
+        getGoodsAllList(da) {
+            post("local/getMerchantMenu", da).then(res => {
+                if (res.code == 0) {
+                    this.loading = false;
+                    let da = res.data.data.products;
+                    let arr = [],
+                        obj = [];
+                    for (const it of da) {
+                        if (!arr.includes(it.category_name)) arr.push(it.category_name)
+                    }
+                    for (const i of arr) {
+                        obj.push({ title: i, goods: [] })
+                    }
+                    for (const it of da) {
+                        obj[arr.indexOf(it.category_name)].goods.push(it)
+                    }
+                    this.goodsAllList = obj
+                }
+            })
+        },
+		// 获取商品详情 - 展开规格选择
+        getDteailsTap(index, idx) {
+            let self = this;
+            let data = self.goodsAllList[index].goods[idx];
+            self.childProductData = {};
+            let info = this.MerchantInfo;
+            if (data.product_choose) {
+                post("local/getProduct", {
+                    brand_id: info.brand_id,
+                    restaurant_id: info.restaurant_id,
+                    product_id: data.product_id
+                }).then(res => {
+                    if (res.code === 0) {
+                        self.goodsOneData = res.data.data;
+                        self.buyNumber = 1;
+                        self.goodShow = true;
+                    }
+                })
+            } else {
+                self.goodsOneData = data;
+                self.goodShow = true;
+            }
+        },
+		// 商品类别导航跳转
+        selectMenuTap(index) {
+            this.menuCurrent = index;
+            this.goodsInto = 'gory-' + index;
+        },
+		// 选择规格标签
+        selectSpecsTap(index, idx) {
+            let self = this;
+            let specification = self.goodsOneData.details.optional;
+            for (let i = 0; i < specification.length; i++) {
+                if (i == index) {
+                    specification[i].active = true;
+                    for (let s = 0; s < specification[i].sku_infos.length; s++) {
+                        if (s == idx) {
+                            specification[i].sku_infos[s].active = true;
+                        } else {
+                            specification[i].sku_infos[s].active = false
+                        }
+                    }
+                }
+            }
+            self.$set(self.goodsOneData.details.optional, index, self.goodsOneData.details.optional[index])
+            let curSelectNum = 0;
+			let spec_price = 0;
+            let selectSpecArr = [];
+            let selectSpecification = {};
+            for (let i = 0; i < specification.length; i++) {
+                if (specification[i].active) {
+                    curSelectNum++
+                    for (let s = 0; s < specification[i].sku_infos.length; s++) {
+                        if (specification[i].sku_infos[s].active) {
+                            let { id, name, price, amount } = specification[i].sku_infos[s]
+							spec_price += price;
+                            selectSpecArr.push({ id, name, price, amount });
+                            selectSpecification[specification[i].name] = specification[i].sku_infos[s].name;
+                        }
+                    }
+                }
+            }
+            if (curSelectNum == specification.length) {
+                self.canSubmit = true;
+            } else {
+                self.canSubmit = false;
+            }
+			
+            self.childProductData = { selectSpecArr, selectSpecification, spec_price };
+        },
+		// 添加购物袋前  修改购买数量
+        editGoodsOne(type) {
+            let self = this;
+            if (type == 'jian') {
+                if (self.buyNumber > 1) {
+                    self.buyNumber--
+                }
+            } else if (type == 'jia') {
+                self.buyNumber++
+            }
+        },
+		// 添加进购物袋
+        addShopCar() {
+            let self = this;
+            let data = self.goodsOneData;
+            if (data.product_choose) {
+                if (self.canSubmit) {
+                    self.addCartGoods(data, self.buyNumber, self.childProductData);
+                } else {
+                    uni.showToast({ title: '请选择规格', icon: 'none' });
+                    return
+                }
+            } else {
+                self.addCartGoods(data, self.buyNumber);
+            }
+        },
+		// 添加购物袋
+        addCartGoods(da, num, spec = []) {
+            let json = {
+                restaurant_id: this.MerchantInfo.restaurant_id,
+                product_id: da.product_id,
+                product_name: da.product_name,
+                user_price: da.user_price,
+				spec_price: spec.spec_price,
+                number: num,
+                spec: JSON.stringify(spec)
+            }
+            post("local/addMyCart", json).then(res => {
+                if (res.code == 0) {
+                    this.goodShow = false;
+                    setTimeout(() => {
+                        this.getCartList();
+                    }, 100)
+                }
+            })
+        },
+		// 编辑购物袋中商品数量
+        editGoods(data, type) {
+            let self = this;
+            if (type == 'jian') {
+				data.number--
+            } else if (type == 'jia') {
+				data.number++
+            }
+			let url = "local/editMyCart",da = {};
+			if(data.number < 1) {
+				data.number = 1;
+				url = "local/delMyCart";
+				da = { cart_id: data.id }
+			}
+			else {
+				url = "local/editMyCart";
+				da = { cart_id: data.id, number: data.number }
+			}
+			post(url, da).then(res => {
+				if (res.code == 0) {
+					setTimeout(() => {
+						this.getCartList();
+					}, 100)
+				}
+			})
+        },
+		// 购物袋列表 获取当前店铺
+        getCartList() {
+            post("local/myCart", {
+                restaurant_id: this.MerchantInfo.restaurant_id,
+            }).then(res => {
+                if (res.code == 0) {
+                    let data = res.data;
+                    let totals = 0;
+                    let number = 0;
+                    data.forEach(itm => {
+                        number += itm.number;
+                        totals = this.$h.Add(totals, this.$h.Mul(this.$h.Add(itm.user_price, itm.spec_price), itm.number));
+                        itm.spec = JSON.parse(itm.spec)
+                    })
+                    this.cartList = data;
+                    this.cartTotal = totals.toFixed(2);
+                    this.cartNumber = number;
+                }
+            })
+        },
+		// 清空购物袋
+        delNoneCartTap() {
+            let self = this;
+            if (self.cartList.length > 0) {
+                uni.showModal({
+                    title: '清空购物袋',
+                    content: '是否清空已经加入购物袋的商品?',
+                    success(res) {
+                        if (res.confirm) {
+							post("local/cleanCart", {
+								restaurant_id: self.MerchantInfo.restaurant_id,
+							}).then(res => {
+								if (res.code == 0) {
+									self.cartShow = false;
+									self.cartList = [];
+								}
+							})
+                        }
+                    }
+                })
+            }
+        },
+    }
+}
+</script>
+<style lang="scss">
+page {
+    background-color: #f5f5f5;
+    overflow: hidden;
+}
+
+.header {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    width: 100%;
+    height: 130rpx;
+    position: fixed;
+    top: 0;
+    z-index: 900;
+    background-color: #fff;
+    box-shadow: 0 0 10rpx rgba(0, 0, 0, .05);
+
+    .left {
+        flex: 0 0 60%;
+        display: flex;
+        flex-direction: column;
+        justify-content: center;
+
+        .title {
+            width: 90%;
+            color: #343434;
+            font-size: 30rpx;
+            font-weight: bold;
+            text-overflow: ellipsis;
+            white-space: nowrap;
+            overflow: hidden;
+        }
+
+        .address {
+            width: 90%;
+            color: #999;
+            font-size: 26rpx;
+            padding-top: 6rpx;
+            text-overflow: ellipsis;
+            white-space: nowrap;
+            overflow: hidden;
+        }
+    }
+
+    .right {
+        flex: 0 0 35%;
+        display: flex;
+        flex-direction: column;
+        align-items: flex-end;
+
+        .type {
+            display: flex;
+            width: 180rpx;
+            height: 60rpx;
+            border-radius: 100rpx;
+            align-items: center;
+            justify-content: center;
+            font-size: 26rpx;
+
+            .name {
+                background-color: #343434;
+                color: #fff;
+                width: 86rpx;
+                border-radius: 100rpx;
+                display: flex;
+                align-items: center;
+                justify-content: center;
+                height: 54rpx;
+                transition: all .3s;
+            }
+
+            .text {
+                width: 86rpx;
+                display: flex;
+                align-items: center;
+                justify-content: center;
+                color: #fff;
+            }
+        }
+
+        .more {
+            color: #999;
+            font-size: 24rpx;
+            display: flex;
+            align-items: center;
+            padding-top: 6rpx;
+
+            icon {
+                padding-left: 4rpx;
+            }
+        }
+    }
+}
+
+.goodsBox {
+    width: 100%;
+    display: flex;
+    height: calc(100vh - 130rpx);
+
+    .left {
+        flex: 0 0 28%;
+
+        .menuList {
+            overflow-y: scroll;
+            // padding-bottom: 20rpx;
+            height: calc(100vh - 130rpx);
+
+            .menu {
+                color: #999999;
+                font-size: 26rpx;
+                padding: 30rpx 10rpx;
+                text-align: center;
+                background-color: transparent;
+                border-left: 6rpx solid transparent;
+                transition: all 0.6s;
+            }
+
+            .active {
+                font-weight: bold;
+                background-color: #FFFFFF;
+            }
+        }
+    }
+
+    .right {
+        flex: 0 0 72%;
+        background-color: #FFFFFF;
+
+        .swiperBpx {
+            width: 95%;
+            margin: 0 auto;
+            padding-top: 14rpx;
+            position: relative;
+
+            swiper {
+                height: 220rpx;
+
+                .swiper-item {
+                    width: 100%;
+                    height: 100%;
+                    display: flex;
+                    align-items: center;
+                    justify-content: center;
+                    color: #FFFFFF;
+                    font-size: 56rpx;
+                }
+            }
+
+            .swiperDots {
+                position: absolute;
+                left: 0;
+                right: 0;
+                bottom: 12rpx;
+                display: flex;
+                justify-content: center;
+                height: 10rpx;
+
+                .dot {
+                    margin: 0 5rpx;
+                    width: 25rpx;
+                    height: 4rpx;
+                    background: #fff;
+                    border-radius: 20rpx;
+                    transition: all 0.6s;
+                    opacity: 0.5;
+                }
+
+                .active {
+                    opacity: 1;
+                }
+            }
+        }
+
+        .goodList {
+            height: calc(100vh - 130rpx);
+        }
+
+        .goodsList {
+            width: 95%;
+            margin: 0 auto;
+
+            .gheader {
+                font-weight: bold;
+                font-size: 26rpx;
+                display: flex;
+                height: 100rpx;
+                align-items: center;
+            }
+
+            .goods {
+                display: flex;
+                position: relative;
+                padding-bottom: 20rpx;
+                margin-bottom: 20rpx;
+
+                .left {
+                    flex: 0 0 30%;
+                    display: flex;
+
+                    .image {
+                        width: 140rpx;
+                        height: 140rpx;
+                        background-color: #f5f5f5;
+                        border-radius: 6rpx;
+                        overflow: hidden;
+                        position: relative;
+
+                        .icon {
+                            position: absolute;
+                            top: 0;
+                            left: 0;
+                        }
+
+                        .none {
+                            position: absolute;
+                            top: 0;
+                            left: 0;
+                            width: 100%;
+                            height: 100%;
+                            background-color: rgba(255, 255, 255, .6);
+                            display: flex;
+                            align-items: center;
+                            justify-content: center;
+                            font-size: 26rpx;
+                            color: #999;
+                        }
+                    }
+                }
+
+                .right {
+                    flex: 0 0 70%;
+
+                    .title {
+                        color: #343434;
+                        font-size: 26rpx;
+                        font-weight: bold;
+                    }
+
+                    .intro {
+                        color: #999;
+                        font-size: 24rpx;
+                        overflow: hidden;
+                        text-overflow: ellipsis;
+                        display: -webkit-box;
+                        -webkit-line-clamp: 2;
+                        -webkit-box-orient: vertical;
+                        padding-top: 4rpx;
+                    }
+
+                    .box {
+                        display: flex;
+                        align-items: center;
+                        padding-top: 10rpx;
+                        position: relative;
+
+                        .price {
+                            color: #343434;
+                            font-size: 28rpx;
+                            font-weight: bold;
+                            flex: 0 0 50%
+                        }
+
+                        .button {
+                            flex: 0 0 50%;
+                            display: flex;
+                            justify-content: flex-end;
+
+                            .text {
+                                background-color: #d3aa79;
+                                color: #fff;
+                                font-size: 24rpx;
+                                padding: 4rpx 16rpx;
+                                border-radius: 100rpx;
+                            }
+                        }
+                    }
+                }
+
+            }
+        }
+    }
+}
+
+.footer {
+    position: fixed;
+    bottom: 140rpx;
+    width: 92%;
+    left: 0;
+    right: 0;
+    height: 80rpx;
+    margin: 0 auto;
+    border-radius: 100rpx;
+    background-color: #fff;
+    display: flex;
+    align-items: center;
+    z-index: 899;
+    box-shadow: 0 0 20rpx rgba(0, 0, 0, .05);
+
+    .label {
+        color: #fff;
+        width: 100%;
+        height: 100%;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+    }
+
+    .left {
+        flex: 0 0 70%;
+        display: flex;
+        align-items: center;
+        justify-content: flex-end;
+        height: 100%;
+
+        .cart {
+            position: absolute;
+            width: 180rpx;
+            height: 100%;
+            left: 0;
+            color: #343434;
+            font-size: 26rpx;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+
+            icon {
+                padding-right: 8rpx;
+            }
+
+            text {
+                position: absolute;
+                top: -8rpx;
+                right: -12rpx;
+                background-color: #d3aa79;
+                border-radius: 100%;
+                width: 36rpx;
+                height: 36rpx;
+                display: flex;
+                align-items: center;
+                justify-content: center;
+                color: #fff;
+                font-size: 24rpx;
+            }
+        }
+
+        .price {
+            color: #343434;
+            font-size: 30rpx;
+            padding-right: 30rpx;
+            font-weight: bold;
+        }
+    }
+
+    .right {
+        flex: 0 0 30%;
+        height: 100%;
+        border-top-right-radius: 100rpx;
+        border-bottom-right-radius: 100rpx;
+        overflow: hidden;
+
+        .button {
+            width: 100%;
+            height: 100%;
+            color: #FFFFFF;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            background-color: #d3aa79;
+        }
+
+        .none {
+            background-color: #bbbbbb;
+        }
+    }
+}
+
+.footerX {
+    bottom: 166rpx;
+}
+
+.showPopBox {
+    position: fixed;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+    background-color: rgba(0, 0, 0, .5);
+    z-index: 970;
+    transition: all 0.3s;
+
+    .bg {
+        position: absolute;
+        top: 0;
+        left: 0;
+        width: 100%;
+        height: 100%;
+        z-index: 971;
+    }
+
+    .showContent {
+        position: absolute;
+        bottom: 120rpx;
+        left: 0;
+        z-index: 972;
+        width: 100%;
+        max-height: 600rpx;
+        background-color: #fff;
+        border-radius: 26rpx 26rpx 0 0;
+
+        .sheade {
+            width: 100%;
+            background-color: #f2f2f2;
+            font-size: 24rpx;
+            height: 68rpx;
+            display: flex;
+            align-items: center;
+            border-radius: 26rpx 26rpx 0 0;
+
+            .left {
+                flex: 0 0 50%;
+
+                .text {
+                    color: #999;
+                    padding-left: 20rpx;
+                }
+            }
+
+            .right {
+                flex: 0 0 50%;
+
+                .text {
+                    color: #999;
+                    display: flex;
+                    align-items: center;
+                    justify-content: flex-end;
+                    padding-right: 20rpx;
+
+                    icon {
+                        padding-right: 6rpx;
+                    }
+                }
+            }
+        }
+
+        .sconten {
+            max-height: 544rpx;
+            overflow-y: scroll;
+
+            .goods {
+                width: 95%;
+                margin: 0 auto;
+                display: flex;
+                align-items: center;
+                border-bottom: 1px dashed #f5f5f5;
+				padding: 10rpx 0;
+
+                .left {
+                    flex: 0 0 60%;
+
+                    .title {
+                        color: #343434;
+                    }
+                }
+
+                .right {
+                    flex: 0 0 40%;
+                    display: flex;
+                    align-items: center;
+                    justify-content: flex-end;
+
+                    .price {
+                        flex: 0 0 40%;
+                        color: #343434;
+                    }
+
+                    .buy {
+                        display: flex;
+                        align-items: center;
+                        justify-content: center;
+                        flex: 0 0 60%;
+
+                        input {
+                            text-align: center;
+                            color: #343434;
+                        }
+
+                        text {
+                            color: #999;
+                            font-size: 24rpx;
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    .infoContent {
+        position: absolute;
+        z-index: 972;
+        width: 100%;
+        max-height: 55vh;
+        top: 130rpx;
+        background-color: #fff;
+        left: 0;
+        overflow-y: scroll;
+        padding-bottom: 20rpx;
+        padding-top: 10rpx;
+
+        .label {
+            width: 95%;
+            margin: 0 auto;
+            padding: 12rpx 0;
+
+            .title {
+                color: #343434;
+                font-size: 26rpx;
+            }
+
+            .text {
+                color: #999;
+                font-size: 24rpx;
+                padding-top: 4rpx;
+            }
+        }
+
+        .images {
+            display: flex;
+            align-items: center;
+            flex-wrap: wrap;
+            padding-top: 6rpx;
+
+            .image {
+                width: 200rpx;
+                height: 200rpx;
+                border: 2rpx solid #f5f5f5;
+                background-color: #f5f5f5;
+                margin-right: 20rpx;
+                position: relative;
+
+                .text {
+                    position: absolute;
+                    bottom: 0;
+                    left: 0;
+                    width: 100%;
+                    background-color: rgba(255, 255, 255, .6);
+                    height: 50rpx;
+                    display: flex;
+                    align-items: center;
+                    justify-content: center;
+                    color: #666;
+                    font-size: 26rpx;
+                }
+            }
+        }
+    }
+
+    .goodsConten {
+        position: absolute;
+        z-index: 972;
+        width: 80%;
+        background-color: #fff;
+        border-radius: 10rpx;
+        padding-bottom: 20rpx;
+        margin-top: -5vh;
+        box-shadow: 0 10rpx 20rpx rgba(0, 0, 0, .06);
+
+        .image {
+            width: 100%;
+            height: 100%;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            position: relative;
+
+            icon {
+                position: absolute;
+            }
+        }
+
+        .title {
+            width: 90%;
+            margin: 0 auto;
+            padding-top: 10rpx;
+            padding-bottom: 10rpx;
+            color: #343434;
+            font-weight: bold;
+        }
+
+        .moreBox {
+            width: 90%;
+            margin: 0 auto;
+
+            .label {
+                padding-bottom: 10rpx;
+
+                .stitle {
+                    padding-bottom: 10rpx;
+
+                    text {
+                        color: #999;
+                        font-size: 26rpx;
+                    }
+                }
+
+                .specBox {
+                    display: flex;
+                    flex-wrap: wrap;
+
+                    .spec {
+                        border: 1px solid #eee;
+                        padding: 8rpx 20rpx;
+                        margin-right: 12rpx;
+                        font-size: 24rpx;
+                        color: #999999;
+                    }
+
+                    .active {
+                        color: #FFFFFF;
+                    }
+                }
+            }
+
+            .more {
+                padding-bottom: 20rpx;
+
+                .labtit {
+                    color: #999;
+                    font-size: 26rpx;
+                    padding-top: 10rpx;
+                }
+
+                .intro {
+                    color: #999;
+                    font-size: 24rpx;
+                }
+            }
+        }
+
+        .gfooter {
+            border-top: 1px solid #f5f5f5;
+            padding-top: 20rpx;
+
+            .price {
+                width: 90%;
+                margin: 0 auto;
+                display: flex;
+                padding: 10rpx 0;
+                align-items: center;
+                justify-content: center;
+
+                .left {
+                    flex: 0 0 65%;
+
+                    .text {
+                        color: #d3aa79;
+                        font-size: 32rpx;
+                        font-weight: bold;
+                        display: flex;
+                        align-items: center;
+
+                        text {
+                            text-decoration: line-through;
+                            color: #999;
+                            font-size: 26rpx;
+                            margin-left: 10rpx;
+                            font-weight: normal;
+                        }
+                    }
+
+                    .label {
+                        color: #999;
+                        font-size: 24rpx;
+                    }
+                }
+
+                .right {
+                    flex: 0 0 35%;
+                    display: flex;
+                    justify-content: flex-end;
+
+                    .buy {
+                        display: flex;
+                        align-items: center;
+
+                        input {
+                            text-align: center;
+                            color: #343434;
+                        }
+                    }
+                }
+            }
+
+            .button {
+                width: 90%;
+                margin: 0 auto;
+                margin-top: 20rpx;
+                background-color: #d3aa79;
+                color: #fff;
+                height: 66rpx;
+                display: flex;
+                align-items: center;
+                justify-content: center;
+                border-radius: 100rpx;
+                font-size: 26rpx;
+            }
+
+            .none {
+                background-color: #cccccc;
+            }
+        }
+    }
+}
+
+.product_img {
+    width: 100%;
+    height: 100%;
+}
+.good_spec {
+	color: #999;
+	font-size: 22rpx;
+	margin-right: 12rpx;
+
+	&:last-child {
+		margin-right: 0;
+	}
+}
+</style>

+ 1 - 1
src/pages/pay-agreement/index.vue

@@ -43,7 +43,7 @@ export default {
       let data = {
         type: this.type,
       };
-      post("/my/article", data).then((res) => {
+      post("v1/my/article", data).then((res) => {
         if (res.code == 0) {
           this.content = res.data.data.content;
         }

+ 3 - 3
src/pages/product/p_details.vue

@@ -283,7 +283,7 @@ export default {
   methods: {
     // 商品详情信息
     loadData(da) {
-      post("goods/goodsDetail", da).then((res) => {
+      post("v1/goods/goodsDetail", da).then((res) => {
         if (res.code === 0) {
           this.detail = res.data.data;
           let imgs = [];
@@ -375,7 +375,7 @@ export default {
       wx.login({
         success(res) {
           if (res.code) {
-            post("appletLogin", {
+            post("v1/appletLogin", {
               invite,
               code: res.code,
             }).then((res) => {
@@ -399,7 +399,7 @@ export default {
     },
     onauthGetTelSuccess(da) {
       this.showAuth = false;
-      post("getMobile", {
+      post("v1/getMobile", {
         unid: this.unid,
         ...da.detail,
       }).then((res) => {

+ 1 - 1
src/pages/product/productRetail.vue

@@ -63,7 +63,7 @@ export default {
                 page: page,
                 type: this.type
             }
-            post("goods/goodsList", data).then(res => {
+            post("v1/goods/goodsList", data).then(res => {
                 if (res.code === 0) {
                     let obj = res.data.data
                     if (page == 1) that.goods = []

+ 1 - 1
src/pages/product/productTeaBaby.vue

@@ -46,7 +46,7 @@ export default {
                 page: page,
                 type: this.type,
             };
-            post("goods/goodsList", data).then((res) => {
+            post("v1/goods/goodsList", data).then((res) => {
                 uni.hideLoading();
                 if (res.code === 0) {
                     let obj = res.data.data;

+ 1 - 1
src/pages/product/productWholesale.vue

@@ -42,7 +42,7 @@ export default {
                 page: page,
                 type: this.type
             }
-            post("goods/goodsList", data).then(res => {
+            post("v1/goods/goodsList", data).then(res => {
                 uni.hideLoading()
                 if (res.code === 0) {
                     let obj = res.data.data

+ 1 - 1
src/pages/protocol/index.vue

@@ -39,7 +39,7 @@ import { post } from "@/request/api.js";
 				let data = {
 					type:this.type
 				}
-				post("ShuZiTeaYW/shop/getPurchaseAgreement",data).then(res => {
+				post("v1/ShuZiTeaYW/shop/getPurchaseAgreement",data).then(res => {
 					if(res.status == 200){
 						that.detail = res.data
 					}

+ 3 - 3
src/pages/sign/index.vue

@@ -113,7 +113,7 @@ export default {
             let data = {
                 time: (new Date().getTime() / 1000).toFixed(0)
             }
-            post("/user/sign", data).then((res) => {
+            post("v1/user/sign", data).then((res) => {
                 if (res.code == 0) {
                     this.todaySign = res.data.today_sign;
                     this.totalSign = res.data.total_sign;
@@ -158,7 +158,7 @@ export default {
                 let data = {
                     time: (new Date().getTime() / 1000).toFixed(0)
                 }
-                post("user/doSign", data).then((res) => {
+                post("v1/user/doSign", data).then((res) => {
                     if (res.code === 0) {
                         // this.nextSign = res.data.next_sign
                         this.$set(this, "nextSign", res.data.next_sign)
@@ -180,7 +180,7 @@ export default {
                 page: page,
                 type: 4,
             };
-            post("goods/goodsList", data).then((res) => {
+            post("v1/goods/goodsList", data).then((res) => {
                 if (res.code === 0) {
                     let obj = res.data.data;
                     if (page <= 1) that.goods = [];

+ 1 - 1
src/pages/speed-up/index.vue

@@ -97,7 +97,7 @@ import cmdProgress from "@/components/cmd-progress/cmd-progress.vue"
 				let data = {
 					consignment_id:this.ojsId
 				}
-				post("goods/consignmenDetail",data).then(res => {
+				post("v1/goods/consignmenDetail",data).then(res => {
 					if(res.code === 0){
 						let da = res.data.data;
 						this.detail = da;

+ 4 - 4
src/pages/szw-order-details/index.vue

@@ -130,7 +130,7 @@ export default {
     },
     methods: {
         loadData() {
-            post("my/orderDetail", {
+            post("v1/my/orderDetail", {
               order_id: this.order_id,
             }).then(res => {
                 uni.hideLoading();
@@ -150,7 +150,7 @@ export default {
                 confirmColor: "#f02f2f",
                 success(res) {
                     if (res.confirm) {
-                        post("my/orderCancel",{
+                        post("v1/my/orderCancel",{
                             order_id: that.order_id
                         }).then(res => {
                             if(res.code === 0){
@@ -202,7 +202,7 @@ export default {
                 cancelColor: "#bbb",
                 success(res) {
                     if (res.confirm) {
-                        post("goods/confirmOrder",{
+                        post("v1/goods/confirmOrder",{
                             order_id: that.order_id
                         }).then(res => {
                             if(res.code === 0){
@@ -274,7 +274,7 @@ export default {
                 cancelColor: "#bbb",
                 success(res) {
                     if (res.confirm) {
-                        post("my/orderDel", {
+                        post("v1/my/orderDel", {
                             order_id: that.order_id,
                         }).then(res => {
                             if (res.code === 0) {

+ 5 - 5
src/pages/szw-order-list/index.vue

@@ -106,7 +106,7 @@ export default {
         type: this.currentType,
       };
 
-      post("my/order", data).then((res) => {
+      post("v1/my/order", data).then((res) => {
         if (res.code === 0) {
           uni.hideLoading();
           uni.stopPullDownRefresh();
@@ -138,7 +138,7 @@ export default {
       // #ifdef  MP-WEIXIN
       let type = "jsapi";
       // #endif
-      post("goods/payOrder", {
+      post("v1/goods/payOrder", {
         id: e.order_id,
         trade_type: type,
       }).then((res) => {
@@ -170,7 +170,7 @@ export default {
         cancelColor: "#bbb",
         success(res) {
           if (res.confirm) {
-            post("my/orderCancel", {
+            post("v1/my/orderCancel", {
               order_id: e.order_id,
             }).then((res) => {
               if (res.code === 0) {
@@ -193,7 +193,7 @@ export default {
         cancelColor: "#bbb",
         success(res) {
           if (res.confirm) {
-            post("goods/confirmOrder", {
+            post("v1/goods/confirmOrder", {
               order_id: e.order_id,
             }).then((res) => {
               if (res.code === 0) {
@@ -227,7 +227,7 @@ export default {
         cancelColor: "#bbb",
         success(res) {
           if (res.confirm) {
-            post("my/orderDel", {
+            post("v1/my/orderDel", {
               order_id
             }).then(res => {
                 if (res.code === 0) {

+ 1 - 1
src/pages/tea-list/index.vue

@@ -53,7 +53,7 @@ export default {
   },
   methods: {
     loadData() {
-        post('/my/mychayou').then(res => {
+        post('v1/my/mychayou').then(res => {
             if(res.code === 0){
                 this.list = res.data.data
             }

+ 6 - 6
src/pages/to-pay-list/index.vue

@@ -185,11 +185,11 @@ export default {
       this.loadData(this.Data);
     },
     loadData(da) {
-      post("goods/goodsDetail", da).then((res) => {
+      post("v1/goods/goodsDetail", da).then((res) => {
         if (res.code === 0) {
           this.goodsInfo = res.data.data;
           if(this.goodsInfo.shipping_method != 2) this.prom_type = this.goodsInfo.shipping_method
-          post("goods/freight", { type: da.type, id: da.id }).then((res) => {
+          post("v1/goods/freight", { type: da.type, id: da.id }).then((res) => {
             if (res.code === 0) this.freight = res.data.freight;
 
             // 计算待支付
@@ -209,7 +209,7 @@ export default {
     },
     // 获取用户地址
     loadAddress() {
-      post("user/addressList").then((res) => {
+      post("v1/user/addressList").then((res) => {
         if (res.code === 0) {
           let da = res.data.data;
           if(da.length){
@@ -244,7 +244,7 @@ export default {
               name: res.userName,
               is_default: 0,
             };
-            post("user/addAddress", data).then((res) => {
+            post("v1/user/addAddress", data).then((res) => {
               if (res.code === 0) {
                 appEv.errTips(res.msg);
                 that.loadAddress();
@@ -287,7 +287,7 @@ export default {
           confirmColor: "#f02f2f",
           success(res) {
             if (res.confirm) {
-              post("goods/submitOrder", {
+              post("v1/goods/submitOrder", {
                 ...that.Data,
                 address_id: that.DefaultAddress.id || '',
 					      regional_code: that.DefaultAddress.regional_code || '',
@@ -331,7 +331,7 @@ export default {
           },
         });
       } else {
-        post("goods/submitOrder", {
+        post("v1/goods/submitOrder", {
           ...that.Data,
           address_id: that.DefaultAddress.id || '',
           regional_code: that.DefaultAddress.regional_code || '',

+ 2 - 2
src/pages/top-up/index.vue

@@ -82,7 +82,7 @@ export default {
                     amount: this.price,
                 };
 
-                post("user/recharge", data).then((res) => {
+                post("v1/user/recharge", data).then((res) => {
                     toPayOpre.toPay(res.data.data, (rea) => {
                         if (!rea) {
                             // 支付成功
@@ -98,7 +98,7 @@ export default {
             }
         },
         getAdvImg() {
-            post("/adImgages").then((res) => {
+            post("v1/adImgages").then((res) => {
                 if (res.code === 0) {
                     console.log(res.data.data);
                     this.advertisingImg = res.data.data;

+ 2 - 2
src/pages/xghc-addrress/userAddress.vue

@@ -159,7 +159,7 @@ export default {
         },
         // 获取用户地址
         loadAddress() {
-            post("user/addressList").then(res => {
+            post("v1/user/addressList").then(res => {
                 if (res.code === 0) {
                     this.addressList = res.data.data;
                 }
@@ -183,7 +183,7 @@ export default {
             this.isadd = true
         },
         delAddress(id) {
-            post("user/delAddress", { id }).then(res => {
+            post("v1/user/delAddress", { id }).then(res => {
                 if (res.code === 0) {
                     appEv.errTips(res.msg);
                     this.loadAddress();

+ 1 - 1
src/pagesB/accountDetails/TeaC.vue

@@ -67,7 +67,7 @@ export default {
         limit: 10,
       };
       uni.showLoading({ mask: true });
-      post("/my/teac", data).then((res) => {
+      post("v1/my/teac", data).then((res) => {
         uni.hideLoading();
         if (res.code === 0) {
           if (res.data.data.data.length > 0) {

+ 2 - 2
src/pagesB/address/list.vue

@@ -58,7 +58,7 @@ export default {
   methods: {
     // 获取用户地址
     loadAddress() {
-      post("user/addressList").then((res) => {
+      post("v1/user/addressList").then((res) => {
         if (res.code === 0) {
           this.addressList = res.data.data;
         }
@@ -74,7 +74,7 @@ export default {
       // this.is_default = status;
     },
     delAddress(id) {
-      post("user/delAddress", { id }).then((res) => {
+      post("v1/user/delAddress", { id }).then((res) => {
         if (res.code === 0) {
           appEv.errTips(res.msg);
           this.loadAddress();

+ 1 - 1
src/pagesB/image-cropper/index.vue

@@ -20,7 +20,7 @@ export default {
   methods: {
     handleCrop(e) {
       this.$up(e.tempFilePath).then((res) => {
-        post("user/setup", {
+        post("v1/user/setup", {
           head_pic: res,
           nickname: this.userinfo.nickname
         }).then( async (res) => {

+ 1 - 1
src/pagesB/invoice/Billingresult.vue

@@ -57,7 +57,7 @@ export default {
         let data = {
             fpqqlsh:this.id
         }
-        post('invoice/getInfo',data).then(res => {
+        post('v1/invoice/getInfo',data).then(res => {
             this.obj = res.data
         })
     },

+ 1 - 1
src/pagesB/invoice/editinvoice.vue

@@ -171,7 +171,7 @@ export default {
         mask: true,
         title: "开票中...",
       });
-      post("invoice/invoicing", data).then((res) => {
+      post("v1/invoice/invoicing", data).then((res) => {
         uni.hideLoading();
         if (res.code === 0) {
           this.goto("/pagesB/invoice/Billingresult", { id: res.data });

+ 1 - 1
src/pagesB/invoice/invoiceList.vue

@@ -67,7 +67,7 @@ export default {
         page: this.page,
         rows: this.rows,
       };
-      post("invoice/myInvoice", data).then((res) => {
+      post("v1/invoice/myInvoice", data).then((res) => {
         if (res.code == 0) {
           this.list = this.list.concat(res.data.data);
           this.total = res.data.total;

+ 1 - 1
src/pagesB/my/assistant.vue

@@ -108,7 +108,7 @@ export default {
         page: this.page,
         rows: this.rows,
       };
-      post("invoice/orderList", data).then((res) => {
+      post("v1/invoice/orderList", data).then((res) => {
         if (res.code == 0) {
           this.list = this.list.concat(res.data.data);
           this.total = res.data.total;

+ 1 - 1
src/pagesB/order/verificationCode.vue

@@ -45,7 +45,7 @@ export default {
   methods: {
     getCode() {
       if (this.order_id) {
-        post("my/orderCollate", {
+        post("v1/my/orderCollate", {
           order_id: this.order_id,
         }).then((res) => {
           uni.hideLoading();

+ 29 - 0
src/pagesB/orderingfood/merchantlist.vue

@@ -0,0 +1,29 @@
+<template>
+  <div class="merchantlist">
+    <div class="P">1</div>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "merchantlist",
+  props: {},
+  components: {},
+  data() {
+    return {};
+  },
+  methods: {},
+  onLoad(da) {},
+  onShow() {},
+  mounted() {},
+  onReachBottom(){
+    console.log('1');
+  },
+};
+</script>
+
+<style scoped lang='scss'>
+.p{
+    height: 500px;
+}
+</style>

+ 1928 - 0
src/pagesB/orderingfood/orderingfood.vue

@@ -0,0 +1,1928 @@
+<template>
+	<view class="content">
+		<block v-if="loading">
+			<view class="loadingBox">
+				<view class="loading">
+					<image lazy-load src="@/static/img/load.gif"></image>
+				</view>
+			</view>
+		</block>
+		<block v-else>
+			<view class="header">
+				<view class="left">
+					<view class="title" :style="'color:'+template.color.color2">{{shopInfo.shop_name}}</view>
+					<view v-if="distance" class="address" :style="'color:'+template.color.color3">距离您 {{(distance/1000)>1?distance/1000+'千米':distance+'米'}}</view>
+					<view v-else class="address" :style="'color:'+template.color.color3">{{shopInfo.shop_address}}</view>
+				</view>
+				<view class="right">
+					<view class="type" :style="'background-color:'+template.color.color1">
+						<view @click="selectTypeTap(1)" :class="template.overall.delivery_type===1?'name':'text'" :style="template.overall.delivery_type===1?'background-color:'+template.color.color2:''">自提</view>
+						<view @click="selectTypeTap(2)" :class="template.overall.delivery_type===2?'name':'text'" :style="template.overall.delivery_type===2?'background-color:'+template.color.color2:''">外卖</view>
+					</view>
+					<!-- <view class="more" @click="infoShow=!infoShow" :style="'color:'+template.color.color3">
+						{{infoShow?'收起门店信息':'更多门店信息'}}
+						<icon :type="infoShow?'up':'down'" size="15" color="#999"></icon>
+					</view> -->
+				</view>
+			</view>
+			<view style="height: 130rpx;"></view>
+			<view class="goodsBox" :style="'height:'+goodsHeight+'px;'">
+				<view class="left">
+					<scroll-view scroll-y scroll-with-animation :style="'height:'+goodsHeight+'px;'" class="menuList">
+						<view class="menu" :class="menuCurrent==index?'active':''" :style="menuCurrent==index?'color:'+template.color.color2+';border-color:'+template.color.color1:'color:'+template.color.color3"
+						 @click="selectMenuTap(index)" v-for="(item, index) in goodsAllList" :key="index">{{item.title}}</view>
+						 <view style="height: 200rpx;"></view>
+					</scroll-view>
+				</view>
+				<view class="right">
+					<scroll-view scroll-y scroll-with-animation :scroll-into-view="goodsInto" @scroll="goodsScroll" :style="'height:'+goodsHeight+'px;'">
+						<view v-if="swiperList.length>0" class="swiperBpx">
+							<swiper class="swiper" circular autoplay interval="6000" duration="500" @change="swiperChange">
+								<swiper-item v-for="(item, index) in swiperList" :key="index" @click="getBannerTap(item.target_data)">
+									<image lazy-load="true" mode="aspectFill" :src="item.pic" />
+								</swiper-item>
+							</swiper>
+							<view class="swiperDots">
+								<block v-for="(item, index) in swiperList" :key="index">
+									<view class="dot" :class="swiperCurrent==index?'active':''"></view>
+								</block>
+							</view>
+						</view>
+						<view id="goodsQuery" v-for="(item, index) in goodsAllList" :key="index">
+							<view class="goodsList" :id="'gory-'+index">
+								<view class="gheader" :style="'color:'+template.color.color2">{{item.title}}</view>
+								<view class="goods lineBottom" v-for="(itm, idx) in item.goods" :key="idx" @click="getDteailsTap(index, idx)">
+									<view class="left">
+										<view class="image">
+											<image :src="itm.pic" lazy-load mode="aspectFill" />
+											<icon v-if="itm.recom_status" class="icon" type="hot" size="30" color="#d3aa79"></icon>
+											<view v-if="itm.stock_number==0" class="none" :style="'color:'+template.color.color5">已售罄</view>
+										</view>
+									</view>
+									<view class="right">
+										<view class="title" :style="'color:'+template.color.color2">{{itm.title}}</view>
+										<view class="intro" :style="'color:'+template.color.color3">{{itm.introduce}}</view>
+										<view class="box">
+											<view class="price" :style="'color:'+template.color.color1">¥{{itm.mini_price}}</view>
+											<view class="button">
+												<block v-if="openStoreStatus">
+													<block v-if="itm.specs_status">
+														<view v-if="itm.stock_number" class="text" :style="'background-color:'+template.color.color1">选规格</view>
+														<view v-else class="text" :style="'background-color:'+template.color.color5">选规格</view>
+													</block>
+													<block v-else>
+														<icon v-if="itm.stock_number" @click.stop="addCartGoods(itm.id, 0, 1, 'add')" type="jia" size="23" :color="template.color.color1"></icon>
+														<icon v-else type="jia" size="23" :color="template.color.color5"></icon>
+													</block>
+												</block>
+												<block v-else>
+													<view v-if="itm.specs_status" class="text" :style="'background-color:'+template.color.color5">选规格</view>
+													<icon v-else type="jia" size="23" :color="template.color.color5"></icon>
+												</block>
+											</view>
+										</view>
+									</view>
+								</view>
+							</view>
+						</view>
+						<view style="height: 150rpx;"></view>
+					</scroll-view>
+				</view>
+			</view>
+			<view v-if="openStoreStatus && cartList.length>0" class="footer" :class="IphoneX>=0?'footerX':''">
+				<view class="left">
+					<view class="cart" @click="cartShow=!cartShow" :style="'color:'+template.color.color2">
+						<icon type="liwu" size="18" color="#343434"></icon>购物袋<text :style="'background-color:'+template.color.color1">{{cartNumber}}</text>
+					</view>
+					<view class="price" :style="'color:'+template.color.color2">¥{{cartTotal}}</view>
+				</view>
+				<view class="right">
+					<block v-if="template.overall.delivery_type===1">
+						<view v-if="cartNumber>0" class="button" @click="toPaypalTap()" :style="'background-color:'+template.color.color1">去结算</view>
+						<view v-else class="button none" :style="'background-color:'+template.color.color5">去结算</view>
+					</block>
+					<block v-if="template.overall.delivery_type===2">
+						<view v-if="cartTotal>=template.overall.delivery_money" class="button" @click="toPaypalTap()" :style="'background-color:'+template.color.color1">去结算</view>
+						<view v-else class="button none" :style="'background-color:'+template.color.color5">{{template.overall.delivery_money}}元起送</view>
+					</block>
+				</view>
+			</view>
+			<view v-if="!openStoreStatus" class="footer" :class="IphoneX>=0?'footerX':''" style="overflow: hidden;">
+				<view class="label" :style="'background-color:'+template.color.color2">本店已休息,营业时间:{{openStoreTime}}</view>
+			</view>
+			
+			<view v-if="goodShow" class="showPopBox" style="display: flex;align-items: center;justify-content: center;">
+				<view class="bg" @click="goodShow=false"></view>
+				<view class="goodsConten">
+					<view class="image">
+						<image :src="goodsOneData.pic" lazy-load mode="aspectFit"></image>
+						<icon @click="goodShow=false" type="close" size="25" :color="template.color.color5" style="top: 10rpx; right: 10rpx;"></icon>
+						<!-- <icon @click="shareShow=true" type="fenxiang" size="25" :color="template.color.color1" style="top: 10rpx; left: 10rpx;"></icon> -->
+						<icon @click="favGoodsTap(goodsOneData.id)" type="shoucang" size="25" :color="template.color.color1" style="top: 10rpx; left: 70rpx;"></icon>
+					</view>
+					<view class="title" :style="'color:'+template.color.color2">{{goodsOneData.title}}</view>
+					<scroll-view scroll-y class="moreBox" style="max-height: 500rpx;">
+						<view class="label" v-for="(item, index) in goodsOneData.specs_list.specification" :key="index">
+							<view class="stitle"><text>{{item.name}}</text></view>
+							<view class="specBox">
+								<view class="spec" :style="itm.active?'background-color:'+template.color.color1+';border-color:'+template.color.color1:''" :class="itm.active?'active':''" @click="selectSpecsTap(index, idx)" v-for="(itm, idx) in item.value" :key="idx">{{itm.name}}</view>
+							</view>
+						</view>
+						<view class="more">
+							<view class="labtit" :style="'color:'+template.color.color3">产品介绍</view>
+							<view class="intro" :style="'color:'+template.color.color3">{{goodsOneData.introduce}}</view>
+						</view>
+					</scroll-view>
+					<view class="gfooter">
+						<view class="price">
+							<view class="left">
+								<view v-if="childProductData.child_product_price" class="text" :style="'color:'+template.color.color1">¥{{childProductData.child_product_price}}<text :style="'color:'+template.color.color3" v-if="childProductData.child_product_cost">¥{{childProductData.child_product_cost}}</text></view>
+								<view v-else class="text" :style="'color:'+template.color.color1">¥{{goodsOneData.mini_price}}<text :style="'color:'+template.color.color3" v-if="goodsOneData.max_price">¥{{goodsOneData.max_price}}</text></view>
+								<view class="label" v-if="childProductData.child_product_spec" :style="'color:'+template.color.color3">
+									<text v-for="(value, name) in childProductData.child_product_spec" :key="name">{{name}}:{{value}} </text>
+								</view>
+							</view>
+							<view class="right">
+								<view class="buy">
+									<icon type="jian" @click="editGoodsOne('jian')" size="23" :color="buyNumber<=1?template.color.color5:template.color.color1"></icon>
+									<input type="number" :value="buyNumber" disabled :style="'color:'+template.color.color2" />
+									<icon type="jia" @click="editGoodsOne('jia')" size="23" :color="buyNumber>=goodsOneData.stock_number?template.color.color5:template.color.color1"></icon>
+								</view>
+							</view>
+						</view>
+						<block v-if="openStoreStatus">
+							<block v-if="buyActive">
+								<view v-if="goodsOneData.specs_status && !childProductData" class="button none" :style="'background-color:'+template.color.color5">加入购物袋</view>
+								<view v-if="goodsOneData.specs_status && childProductData" class="button" @click="addShopCar()" :style="'background-color:'+template.color.color1">加入购物袋</view>
+								<view v-if="!goodsOneData.specs_status" class="button" @click="addShopCar()" :style="'background-color:'+template.color.color1">加入购物袋</view>
+							</block>
+							<view v-else class="button none" :style="'background-color:'+template.color.color5">{{goodsOneData.stock_number===0?'商品已售罄':'加入购物袋'}}</view>
+						</block>
+						<block v-else>
+							<view class="button none" :style="'background-color:'+template.color.color5">本店已休息</view>
+						</block>
+					</view>
+				</view>
+			</view>
+			<view v-if="cartShow && cartList.length>0" class="showPopBox" style="z-index: 898;">
+				<view class="bg" @click="cartShow=false"></view>
+				<view class="showContent" :style="IphoneX>=0?'bottom:146rpx;':''">
+					<view class="sheade">
+						<view class="left">
+							<view class="text">共{{cartNumber}}件商品</view>
+						</view>
+						<view class="right">
+							<view class="text" @click="delNoneCartTap()"><icon type="shanchu" size="14"></icon> 清空购物袋</view>
+						</view>
+					</view>
+					<view class="sconten" :style="IphoneX>=0?'padding-bottom:146rpx;':'padding-bottom: 120rpx;'">
+						<view class="goods" v-for="(item, index) in cartList" :key="index" :style="cartList.length==(index+1)?'border-bottom: none;':''">
+							<view class="left">
+								<view class="title">{{item.title}}</view>
+								<view class="label" v-if="item.spec_name">
+									<text v-for="(value, name) in item.spec_name" :key="name">{{name}}:{{value}}</text>
+								</view>
+							</view>
+							<view class="right">
+								<view class="price">¥{{item.mini_price}}</view>
+								<view class="buy">
+									<block v-if="item.shelve_status">
+										<block v-if="item.stock_number">
+											<icon type="jian" @click="editGoods(item, 'jian')" size="23" :color="item.num==1?'#cccccc':'#d3aa79'"></icon>
+											<input type="number" :value="item.num" disabled />
+											<icon type="jia" @click="editGoods(item, 'jia')" size="23" :color="item.num>=item.stock_number?'#cccccc':'#d3aa79'"></icon>
+										</block>
+										<block v-else>
+											<text>商品已售罄</text>
+										</block>
+									</block>
+									<block v-else>
+										<text>商品已下架</text>
+									</block>
+								</view>
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+			
+			<!-- <view v-if="infoShow" class="showPopBox" style="z-index: 899;">
+				<view class="bg" @click="infoShow=false"></view>
+				<view class="infoContent">
+					<view v-if="template.overall.discount_text" class="label">
+						<view class="title" :style="'color:'+template.color.color2">优惠信息</view>
+						<view class="text" :style="'color:'+template.color.color3">
+							<text>{{template.overall.discount_text}}</text>
+						</view>
+					</view>
+					<view v-if="template.overall.delivery_text" class="label">
+						<view class="title" :style="'color:'+template.color.color2">配送信息</view>
+						<view class="text" :style="'color:'+template.color.color3">
+							<text>{{template.overall.delivery_text}}</text>
+						</view>
+					</view>
+					<view v-if="template.overall.store_text" class="label">
+						<view class="title" :style="'color:'+template.color.color2">门店信息</view>
+						<view class="text" :style="'color:'+template.color.color3">
+							<text>{{template.overall.store_text}}</text>
+						</view>
+					</view>
+					<view v-if="template.overall.licence_list.length>0" class="label">
+						<view class="title" :style="'color:'+template.color.color2">门店展示</view>
+						<view class="images">
+							<view class="image" v-for="(item, index) in template.overall.licence_list" :key="index" @click="previewImage(index)">
+								<image mode="aspectFill" :src="item.pics" lazy-load></image>
+								<view v-if="item.title" class="text" :style="'color:'+template.color.color3">{{item.title}}</view>
+							</view>
+						</view>
+					</view>
+				</view>
+			</view> -->
+			
+			<!-- <view v-if="shareShow" class="showShare">
+				<view class="bg" @click="[haibaoStu=false,shareShow=false]"></view>
+				<view class="share">
+					<view class="title" :style="'color:'+template.color.color2">{{haibaoStu?'预览分享海报':'选择分享方式'}}</view>
+					<view v-if="haibaoStu" class="haibao">
+						<image @click="previewHaiImage()" :src="haibaoImg" mode="aspectFill"></image>
+						<view class="save" @click="saveImageToPhotosAlbum()" :style="'background-color:'+template.color.color1">保存海报到本地</view>
+					</view>
+					<view v-else class="box">
+						<view class="label">
+							<icon type="weixin" size="42" color="#07c160"></icon>
+							<view class="text" :style="'color:'+template.color.color3">微信好友</view>
+							<button open-type="share" :data-goods="goodsOneData"></button>
+						</view>
+						<view class="label" @click="getGoodsHaibao()">
+							<icon type="haibao" size="42" :color="template.color.color1"></icon>
+							<view class="text" :style="'color:'+template.color.color3">生成海报</view>
+						</view>
+					</view>
+				</view>
+			</view> -->
+			
+			<!-- <view v-if="couponsList.length>0 && !couponsShow" @click="couponsShow=true" class="couponsIcon" :style="cartList.length>0?'bottom: 250rpx;':'bottom: 160rpx;'">
+				<image v-if="template.overall.coupons_icon" mode="aspectFill" lazy-load :src="template.overall.coupons_icon"></image>
+				<image v-else mode="aspectFill" lazy-load src="../../static/images/icon/bonus.png"></image>
+			</view> -->
+
+			<!-- <view v-if="couponsShow" class="showCoupons">
+				<view class="bg" @click="couponsShow=false"></view>
+				<view class="coupons">
+					<view class="headerTitle">赠送您{{couponsList.length}}张优惠券</view>
+					<scroll-view scroll-y class="listBox" style="height:246rpx;">
+					  <view class="list" v-for="(item, index) in couponsList" :key="index">
+						<view class="left">
+						  <view class="price" :style="'color:'+template.color.color1"><text>¥</text>{{item.moneys}}</view>
+						  <view class="text" :style="'color:'+template.color.color3">满{{item.min_money}}元可用</view>
+						</view>
+						<view class="active">
+						  <view class="top"></view>
+						  <view class="buttom"></view>
+						</view>
+						<view class="right">
+						  <view class="title" :style="'color:'+template.color.color2">{{item.title}}</view>
+						  <view class="times" v-if="item.time_type===1" :style="'color:'+template.color.color3">{{item.end_time}}日截止</view>
+						  <view class="times" v-else :style="'color:'+template.color.color3">领取后{{item.time_day}}天内有效</view>
+						</view>
+					  </view>
+					</scroll-view>
+					<view class="buttonBox">
+					  <view class="button" @click="getNewCouponsTap()">立即领取</view>
+					</view>
+					<image src="../../static/images/icon/vip_bg.png"></image>
+					<icon type="guanbi" color="#fff" size="35" class="close" @click="couponsShow=false"></icon>
+				</view>
+			</view> -->
+		</block>
+	</view>
+</template>
+
+<script>
+	import Icon from "@/components/icon/icon.vue";
+	import QQMapWX from '@/static/utils/qqmap-wx-jssdk.min.js'
+	const app = getApp();
+	export default {
+		components: {
+			Icon
+		},
+		props: {
+			goods: {
+				type: Number,
+				default: 0,
+			},
+		},
+		data() {
+			return {
+				loading: true,
+				IphoneX: this.IphoneX,
+				template: uni.getStorageSync('__yipinTemplateConfig'),
+				shopInfo: uni.getStorageSync('__yipinShopInfo'),
+				userData: uni.getStorageSync('__yipinUserInfo'),
+				goodsHeight: this.IphoneX >= 0 ? this.WindowHeight - 138 : this.WindowHeight - 125,
+				menuCurrent: 0,
+				menuList: [],
+				swiperCurrent: 0,
+				swiperList: [],
+				page: 1,
+				goodsListData: {
+					page: 1,
+					total: 0,
+					list: []
+				},
+				cartTotal: 0,
+				cartNumber: 0,
+				cartList: [],
+				goodsOneData: '',
+				buyNumber: 1,
+				buyNumMax: 0,
+				canSubmit: false,
+				childProductData: '',
+				buyActive: false,
+				cartShow: false,
+				infoShow: false,
+				goodShow: false,
+				goodsInto: '',
+				goodsAllList: [],
+				heightArr: [],
+				distance: 0,
+				haibaoStu: false,
+				haibaoImg: '',
+				shareShow: false,
+				openStoreStatus: true,
+				openStoreTime: '',
+				couponsList: [],
+				couponsShow: false
+			}
+		},
+		onReady() {
+			let self = this;
+			let temp = self.template.overall.open_time;
+			if(temp){
+				let news = temp.split(',');
+				let date = `${new Date().getHours()}:${new Date().getMinutes()<10?'0'+new Date().getMinutes():new Date().getMinutes()}`;
+				self.openStoreTime = `${news[0]}~${news[1]}`;
+				if(self.CompareDate(date, news[0]) && self.CompareDate(news[1], date)){
+					self.openStoreStatus = true;
+				}else{
+					self.openStoreStatus = false;
+				}
+			}
+			self.getGoodsAllList();
+			self.getBannerList();
+			self.getCartList();
+			self.getShopDistance();
+			// self.getCouponsList();
+			if(self.goods){
+				self.Get(self.Url.goodsDetail, {id: self.goods}).then(res => {
+					if(res.code === 0){
+						self.goodsOneData = res.data;
+						self.goodsOneData.pic = res.data.pic_list[0].pic;
+						if(res.data.stock_number){
+							self.buyActive = true;
+							self.buyNumber = 1;
+							self.buyNumMax = res.data.stock_number;
+						}else{
+							self.buyActive = false;
+							self.buyNumber = 0;
+							self.buyNumMax = 0;
+						}
+						self.goodShow = true;
+						self.$emit('gooods', 0);
+						//self.goods = 0;
+					}
+				})
+			}
+		},
+		methods: {
+			CompareDate(t1,t2){
+				let date = new Date();
+				let a = t1.split(":");
+				let b = t2.split(":");
+				return date.setHours(a[0],a[1]) > date.setHours(b[0],b[1]);
+			},
+			getBannerList() {
+				let self = this;
+				self.Get(self.Url.bannerList, {ctype: 'home'}).then(res => {
+					if(res.code === 0){
+						self.swiperList = res.data;
+					}
+				})
+			},
+			getCouponsList() {
+				let self = this;
+				if(self.openStoreStatus && self.template.overall.coupons_list){
+					self.Post(self.Url.couponsGoods, {coupons_list: self.template.overall.coupons_list}).then(res => {
+						if(res.code === 0){
+							let list = [];
+							res.data.forEach(lis => {
+								if(lis.user_status){
+									list.push(lis)
+								}
+							})
+							self.couponsList = list;
+							if(list.length>0){
+								self.couponsShow = true;
+							}
+						}
+					})
+				}
+			},
+			getShopDistance() {
+				let self = this;
+				let temp = self.template;
+				if(temp.overall.qqmap_key && temp.overall.latitude && temp.overall.longitude){
+					uni.getLocation({
+						type:'wgs84',
+						success:function(gps){
+							self.mapCTX = new QQMapWX({key: temp.overall.qqmap_key});
+							self.mapCTX.calculateDistance({
+								from: {
+									latitude: temp.overall.latitude,
+									longitude: temp.overall.longitude
+								},
+								to: [{
+									location: {
+										lat: gps.latitude,
+										lng: gps.longitude
+									}
+								}],
+								success: (ctx) => {
+									self.distance = ctx.result.elements[0].distance;
+								}
+							});
+						}
+					})
+				}
+			},
+			getCartList() {
+				let self = this;
+				self.Get(self.Url.cartList, {}).then(res => {
+					if(res.code === 0){
+						let data = res.data;
+						let totals = 0;
+						let number = 0;
+						data.forEach(itm => {
+							if(itm.shelve_status && itm.stock_number>0){
+								number += itm.num;
+								totals += itm.mini_price * itm.num;
+							}
+						})
+						self.cartList = data;
+						self.cartTotal = totals.toFixed(2);
+						self.cartNumber = number;
+					}
+				})
+			},
+			getGoodsAllList() {
+				let self = this;
+				self.Get(self.Url.goodsAllList, {}).then(res => {
+					if(res.code === 0){
+						self.loading = false;
+						self.goodsAllList = res.data;
+						setTimeout(function (){
+						  self.goodsQuery();
+						}, 500)
+					}
+				})
+			},
+			goodsQuery() {
+			  let self = this;
+			  let heightArr = [];
+			  const query = uni.createSelectorQuery().in(self);
+			  query.selectAll('#goodsQuery').boundingClientRect()
+			  query.exec(function(res){
+			    let react = res[0];
+			    for(let i = 0; i < react.length; i++){
+			      heightArr.push(react[i].bottom-65)
+			    }
+				self.heightArr = heightArr;
+			  });
+			},
+			goodsScroll(e) {
+				let self = this;
+				let scrollTop = e.detail.scrollTop;
+				let scrollArr = self.heightArr;
+				for(let i = 0; i < scrollArr.length; i++){
+					if(scrollTop <= scrollArr[i]){
+						self.menuCurrent = i;
+						return
+					}
+				}
+			},
+			selectTypeTap(type) {
+				let self = this;
+				let data = self.template;
+				if(app.globalData.user){
+					data.overall.delivery_type = type;
+					uni.setStorage({key: '__yipinTemplateConfig',data: data});
+				}else{
+					uni.navigateTo({url: '/pages/user/login'});
+				}
+				
+				
+			},
+			selectMenuTap(index) {
+				this.menuCurrent = index;
+				this.goodsInto = 'gory-'+index;
+			},
+			swiperChange(e) {
+				this.swiperCurrent = e.detail.current;
+			},
+			getBannerTap(id) {
+				let self = this;
+				if(app.globalData.user){
+					self.childProductData = '';
+					self.Get(self.Url.goodsDetail, {id: id}).then(res => {
+						if(res.code === 0){
+							self.goodsOneData = res.data;
+							self.goodsOneData.pic = res.data.pic_list[0].pic;
+							if(res.data.stock_number){
+								self.buyActive = true;
+								self.buyNumber = 1;
+								self.buyNumMax = res.data.stock_number;
+							}else{
+								self.buyActive = false;
+								self.buyNumber = 0;
+								self.buyNumMax = 0;
+							}
+							self.goodShow = true;
+						}
+					})
+				}else{
+					uni.navigateTo({
+						url: '/pages/user/login'
+					})
+				}
+			},
+			getDteailsTap(index, idx) {
+				let self = this;
+				let data = self.goodsAllList[index].goods[idx];
+				if(app.globalData.user){
+					self.childProductData = '';
+					if(data.stock_number){
+						self.buyActive = true;
+						self.buyNumber = 1;
+						self.buyNumMax = data.stock_number;
+					}else{
+						self.buyActive = false;
+						self.buyNumber = 0;
+						self.buyNumMax = 0;
+					}
+					if(data.specs_status){
+						self.Get(self.Url.goodsDetail, {id: data.id}).then(res => {
+							if(res.code === 0){
+								self.goodsOneData = res.data;
+								self.goodsOneData.pic = res.data.pic_list[0].pic;
+								if(res.data.stock_number){
+									self.buyActive = true;
+									self.buyNumber = 1;
+									self.buyNumMax = res.data.stock_number;
+								}else{
+									self.buyActive = false;
+									self.buyNumber = 0;
+									self.buyNumMax = 0;
+								}
+								self.goodShow = true;
+							}
+						})
+					}else{
+						self.goodsOneData = data;
+						self.goodShow = true;
+					}
+				}else{
+					uni.navigateTo({
+						url: '/pages/user/login'
+					})
+				}
+			},
+			selectSpecsTap(index, idx) {
+				let self = this;
+				let specification = self.goodsOneData.specs_list.specification;
+				for(let i = 0; i < specification.length; i++){
+					if(i == index) {
+						specification[i].active = true;
+						for(let s = 0; s < specification[i].value.length; s++){
+							if(s == idx) {
+								specification[i].value[s].active = true;
+							}else{
+								specification[i].value[s].active = false
+							}
+						}
+					}
+				}
+				self.$set(self.goodsOneData.specs_list.specification, index, self.goodsOneData.specs_list.specification[index])
+				let curSelectNum = 0;
+				let propertyChildIds = '';
+				let propertyChildNames = '';
+				let selectSpecification = {};
+				for(let i = 0; i < specification.length; i++){
+					if(specification[i].active){
+						curSelectNum++
+						for(let s = 0; s < specification[i].value.length; s++){
+							if(specification[i].value[s].active){
+								selectSpecification[specification[i].name] = specification[i].value[s].name;
+							}
+						}
+					}
+				}
+				if(curSelectNum==specification.length){
+					self.canSubmit = false;
+				}else{
+					self.canSubmit = true;
+				}
+				let childProductArray = self.goodsOneData.specs_list.childProductArray;
+				for(let i = 0; i < childProductArray.length; i++){
+					if(!self.canSubmit && Object.keys(selectSpecification).every(key => childProductArray[i].child_product_spec[key] === selectSpecification[key])){
+						self.buyActive = true;
+						self.childProductData = childProductArray[i];
+						self.buyNumber = 1;
+						self.buyNumMax = childProductArray[i].child_product_stock;
+						if(childProductArray[i].child_product_stock==0){
+							self.buyActive = false;
+							self.buyNumber = 0;
+							uni.showToast({
+								title: '该商品库存不足',
+								icon: 'none'
+							})
+						}
+					}
+				}
+			},
+			addShopCar() {
+				let self = this;
+				let data = self.goodsOneData;
+				if(data.specs_status){
+					let child = self.childProductData;
+					if(child.child_product_id){
+						self.addCartGoods(data.id, child.child_product_id, self.buyNumber, 'add');
+					}else{
+						uni.showToast({title: '请选择规格', icon: 'none'});
+						return
+					}
+				}else{
+					self.addCartGoods(data.id, 0, self.buyNumber, 'add');
+				}
+			},
+			addCartGoods(id, spec, number, type){
+				let self = this;
+				if(app.globalData.user){
+					let postData = {
+						id: id,
+						number: number
+					}
+					let url = {};
+					if(spec){
+						postData.spec = spec;
+					}
+					if(type=='add'){
+						url.link = self.Url.cartAdd;
+					}else if(type=='edit'){
+						url.link = self.Url.cartEdit;
+					}
+					self.Get(url.link, postData).then(res => {
+						if(res.code === 0){
+							self.goodShow = false;
+							//uni.showToast({title: '加入成功'});
+							self.getCartList();
+						}else{
+							uni.showModal({
+								title: '购物袋提示',
+								content: res.msg,
+								showCancel: false
+							})
+							return
+						}
+					})
+				}else{
+					uni.navigateTo({
+						url: '/pages/user/login'
+					})
+				}
+			},
+			delNoneCartTap() {
+				let self = this;
+				let data =self.cartList;
+				let list = [];
+				data.forEach(res => {
+					list.push(res)
+				})
+				if(list.length>0){
+					uni.showModal({
+						title: '清空购物袋',
+						content: '是否清空已经加入购物袋的商品?',
+						success(res) {
+							if(res.confirm){
+								self.cartShow = false;
+								list.forEach(itm => {
+									let postData = {
+										id: itm.id,
+										number: 0
+									}
+									if(itm.spec_id){
+										postData.spec = itm.spec_id;
+									}
+									self.Get(self.Url.cartEdit, postData).then(res => {
+										if(res.code === 0){
+											self.getCartList();
+										}
+									})
+								})
+							}
+						}
+					})
+				}
+			},
+			editGoodsOne(type) {
+				let self = this;
+				let data = self.goodsOneData;
+				if(type == 'jian'){
+					if(self.buyNumber>1){
+						self.buyNumber--
+					}
+				}else if(type == 'jia'){
+					if(self.buyNumber<data.stock_number){
+						self.buyNumber++
+					}else{
+						uni.showToast({title: '库存不足', icon: 'none'});
+						return
+					}
+				}
+			},
+			editGoods(data, type){
+				let self = this;
+				if(type=='jian'){
+					self.addCartGoods(data.id, data.spec_id, data.num-1, 'edit');
+				}else if(type=='jia'){
+					if(data.num == data.stock_number){
+						uni.showModal({
+							title: '库存不足',
+							content: '购买数量已经超过最大库存数量',
+							showCancel: false
+						})
+						return
+					}else{
+						self.addCartGoods(data.id, data.spec_id, data.num+1, 'edit');
+					}
+				}
+			},
+			previewImage(index) {
+				let data = this.template.overall.licence_list;
+				let list = [];
+				data.forEach(res => {
+					list.push(res.pics);
+				})
+				uni.previewImage({
+					urls: list,
+					current: list[index]
+				});
+			},
+			favGoodsTap(id){
+				let self = this;
+				if(app.globalData.user){
+					self.Get(self.Url.favoriteAdd, {id: id, type: true}).then(res => {
+						if(res.code == 0){
+							uni.showToast({title: '收藏成功'});
+						}else{
+							self.Get(self.Url.favoriteAdd, {id: id, type: false}).then(res => {
+								if(res.code == 0){
+									uni.showToast({title: '取消收藏', icon: 'none'});
+								}
+							})
+						}
+					});
+				}else{
+					uni.navigateTo({url: '/pages/user/login'});
+				}
+			},
+			toPaypalTap() {
+				let self = this;
+				let data = self.cartList;
+				if(app.globalData.user){
+					uni.setStorage({key: '__yipinShopCart',data: data});
+					uni.navigateTo({url: '/pages/order/paypal'});
+				}else{
+					uni.navigateTo({
+						url: '/pages/user/login'
+					})
+				}
+			},
+			getNewCouponsTap() {
+				let self = this;
+				if(app.globalData.user){
+					let data = self.couponsList;
+					data.forEach((lis, idx) => {
+						self.Get(self.Url.couponsUserAdd, {id: lis.id}).then(res => {
+							if(res.code === 0){
+								uni.showToast({title: '领取成功'});
+								self.couponsShow = false;
+								if(idx===(data.length-1)){
+									self.couponsShow = false;
+									self.couponsList = [];
+								}
+							}else{
+								uni.showModal({
+									content: res.msg,
+									showCancel: false
+								})
+							}
+						})
+					})
+				}else{
+					uni.navigateTo({
+						url: '/pages/user/login'
+					})
+				}
+			},
+			getGoodsHaibao() {
+				let self = this;
+				let data = self.goodsOneData;
+				let pics = data.pic.replace(/http:/g,'https:');
+				// if(self.haibaoImg){
+				// 	self.haibaoStu = true;
+				// 	return
+				// }
+				let postData = {
+					scene: 'g='+data.id,
+					page: 'pages/tabbar',
+					dtime: 10
+				}
+				uni.showLoading({title: '海拔绘制中'});
+				self.Post(self.Url.qrcodeWechat, postData).then(res => {
+					if(res.code === 0){
+						wx.downloadFile({
+							url: res.url,
+							success (qrcode) {
+								uni.showLoading({title: '海报绘制中'});
+								wx.downloadFile({
+									url: pics,
+									success (pic) {
+										let sics = self.shopInfo.shop_logo.replace(/http:/g,'https:');
+										wx.downloadFile({
+											url: sics,
+											success (sic) {
+												let ctxs = wx.createCanvasContext('goodsHaibao');
+												let postData = {
+													pic: pic.tempFilePath,
+													color: self.template.color,
+													shop_logo: sic.tempFilePath,
+													max_price: '¥'+data.max_price,
+													mini_price: '¥'+data.mini_price,
+													stock_number: '库存:'+data.stock_number,
+													shop_name: self.shopInfo.shop_name,
+													qrcode: qrcode.tempFilePath,
+													nikename: self.userData.nikename
+												};
+												console.log(postData)
+												//商品标题
+												if(data.title.split('').length >= 16){
+													postData.title = data.title.substr(0,16)+'...';
+												}else{
+													postData.title = data.title;
+												}
+												//商品介绍
+												if(data.introduce.split('').length >= 18){
+													postData.introduce = data.introduce.substr(0,18)+'...';
+												}else{
+													postData.introduce = data.introduce;
+												}
+												ctxs.setFillStyle('#FFFFFF')
+												ctxs.fillRect(0, 0, 600, 1000)
+												ctxs.setFillStyle(postData.color.color1)
+												ctxs.setFontSize(30)
+												ctxs.setTextAlign('left')
+												ctxs.fillText(postData.shop_name, 105, 73)
+												ctxs.save()
+												ctxs.setFillStyle('#ffffff')
+												self.roundRect(ctxs, 30, 30, 60, 60, 6)
+												ctxs.drawImage(postData.shop_logo, 30, 30, 60, 60)
+												ctxs.restore()
+												ctxs.save()
+												self.roundRect(ctxs, 30, 120, 540, 610, 10)
+												ctxs.setFillStyle(postData.color.color5)
+												ctxs.fillRect(30, 120, 540, 540)
+												ctxs.drawImage(postData.pic, 30, 120, 540, 540)
+												ctxs.setFillStyle(postData.color.color1)
+												ctxs.fillRect(30, 650, 540, 80)
+												ctxs.setFillStyle('#ffffff')
+												ctxs.setFontSize(42)
+												ctxs.setTextAlign('left')
+												ctxs.fillText(postData.mini_price, 45, 705)
+												const minrics = ctxs.measureText(postData.mini_price)
+												ctxs.setFontSize(30)
+												ctxs.setTextAlign('left')
+												ctxs.fillText(postData.max_price, 55+minrics.width, 703)
+												const maxrics = ctxs.measureText(postData.max_price)
+												ctxs.beginPath()
+												ctxs.setStrokeStyle('#FFFFFF')
+												ctxs.setLineWidth(2)
+												ctxs.moveTo(55+minrics.width, 695)
+												ctxs.lineTo(55+minrics.width+maxrics.width, 695)
+												ctxs.setFontSize(24)
+												ctxs.setTextAlign('right')
+												ctxs.fillText(postData.stock_number, 550, 700)
+												ctxs.stroke()
+												ctxs.restore()
+												ctxs.setFillStyle(postData.color.color3)
+												ctxs.setFontSize(32)
+												ctxs.setTextAlign('left')
+												ctxs.fillText(postData.title, 30, 775)
+												ctxs.setFillStyle(postData.color.color5)
+												ctxs.setFontSize(28)
+												ctxs.setTextAlign('left')
+												ctxs.fillText(postData.introduce, 30, 820)
+												ctxs.drawImage(postData.qrcode, 430, 850, 120, 120)
+												ctxs.setFillStyle(postData.color.color5)
+												ctxs.setFontSize(22)
+												ctxs.setTextAlign('right')
+												ctxs.fillText('长按扫描二维码查看详情', 400, postData.nikename?940:920)
+												ctxs.fillText('来自'+postData.nikename+'的推荐', 400, 910)
+												ctxs.restore()
+												ctxs.save()
+												ctxs.draw()
+												setTimeout(function () {
+													uni.canvasToTempFilePath({
+														x: 0,y: 0,width: 600,height: 1000,
+														canvasId: 'goodsHaibao',
+														success: function (res) {
+															uni.hideLoading();
+															self.haibaoImg = res.tempFilePath;
+															self.haibaoStu = true;
+														},
+														fail: function(ces){
+															console.log(ces)
+															uni.hideLoading();
+															uni.showToast({title: '海拔绘制失败', icon:'none'});
+														}
+													})
+												}, 500);
+											}
+										})
+									}
+								});
+							}
+						})
+					}else{
+						uni.hideLoading();
+						uni.showModal({
+							title: '绘制失败',
+							content: res.msg,
+							showCancel: false
+						})
+					}
+				});
+			},
+			roundRect(ctx, x, y, w, h, r) {
+			  ctx.beginPath()
+			  ctx.setFillStyle('transparent')
+			  ctx.arc(x + r, y + r, r, Math.PI, Math.PI * 1.5)
+			  ctx.moveTo(x + r, y)
+			  ctx.lineTo(x + w - r, y)
+			  ctx.lineTo(x + w, y + r)
+			  ctx.arc(x + w - r, y + r, r, Math.PI * 1.5, Math.PI * 2)
+			  ctx.lineTo(x + w, y + h - r)
+			  ctx.lineTo(x + w - r, y + h)
+			  ctx.arc(x + w - r, y + h - r, r, 0, Math.PI * 0.5)
+			  ctx.lineTo(x + r, y + h)
+			  ctx.lineTo(x, y + h - r)
+			  ctx.arc(x + r, y + h - r, r, Math.PI * 0.5, Math.PI)
+			  ctx.lineTo(x, y + r)
+			  ctx.lineTo(x + r, y)
+			  ctx.fill()
+			  ctx.closePath()
+			  ctx.clip()
+			},
+			previewHaiImage() {
+				let self = this;
+				uni.previewImage({
+					urls: [self.haibaoImg],
+					current: self.haibaoImg,
+					success() {
+						uni.saveImageToPhotosAlbum({
+							filePath: self.haibaoImg,
+							success: function () {}
+						});
+					}
+				});
+			},
+			saveImageToPhotosAlbum() {
+				let self = this;
+				uni.saveImageToPhotosAlbum({
+					filePath: self.haibaoImg,
+					success: function () {
+						uni.showToast({title: '海报保存成功'});
+					}
+				});
+			},
+		}
+	}
+</script>
+
+<style lang="scss">
+	page {
+		background-color: #f5f5f5;
+		overflow: hidden;
+	}
+
+	.header {
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		width: 100%;
+		height: 130rpx;
+		position: fixed;
+		top: 0;
+		z-index: 900;
+		background-color: #fff;
+		box-shadow: 0 0 10rpx rgba(0, 0, 0, .05);
+
+		.left {
+			flex: 0 0 60%;
+			display: flex;
+			flex-direction: column;
+			justify-content: center;
+
+			.title {
+				width: 90%;
+				color: #343434;
+				font-size: 30rpx;
+				font-weight: bold;
+				text-overflow: ellipsis;
+				white-space: nowrap;
+				overflow: hidden;
+			}
+
+			.address {
+				width: 90%;
+				color: #999;
+				font-size: 26rpx;
+				padding-top: 6rpx;
+				text-overflow: ellipsis;
+				white-space: nowrap;
+				overflow: hidden;
+			}
+		}
+
+		.right {
+			flex: 0 0 35%;
+			display: flex;
+			flex-direction: column;
+			align-items: flex-end;
+
+			.type {
+				display: flex;
+				width: 180rpx;
+				height: 60rpx;
+				border-radius: 100rpx;
+				align-items: center;
+				justify-content: center;
+				font-size: 26rpx;
+
+				.name {
+					background-color: #343434;
+					color: #fff;
+					width: 86rpx;
+					border-radius: 100rpx;
+					display: flex;
+					align-items: center;
+					justify-content: center;
+					height: 54rpx;
+					transition: all .3s;
+				}
+
+				.text {
+					width: 86rpx;
+					display: flex;
+					align-items: center;
+					justify-content: center;
+					color: #fff;
+				}
+			}
+
+			// .more {
+			// 	color: #999;
+			// 	font-size: 24rpx;
+			// 	display: flex;
+			// 	align-items: center;
+			// 	padding-top: 6rpx;
+
+			// 	icon {
+			// 		padding-left: 4rpx;
+			// 	}
+			// }
+		}
+	}
+
+	.goodsBox {
+		width: 100%;
+		display: flex;
+
+		.left {
+			flex: 0 0 28%;
+
+			.menuList {
+				overflow-y: scroll;
+				padding-bottom: 20rpx;
+
+				.menu {
+					color: #999999;
+					font-size: 26rpx;
+					padding: 30rpx 10rpx;
+					text-align: center;
+					background-color: transparent;
+					border-left: 6rpx solid transparent;
+					transition: all 0.6s;
+				}
+
+				.active {
+					font-weight: bold;
+					background-color: #FFFFFF;
+				}
+			}
+		}
+
+		.right {
+			flex: 0 0 72%;
+			background-color: #FFFFFF;
+
+			.swiperBpx {
+				width: 95%;
+				margin: 0 auto;
+				padding-top: 14rpx;
+				position: relative;
+
+				swiper {
+					height: 220rpx;
+
+					.swiper-item {
+						width: 100%;
+						height: 100%;
+						display: flex;
+						align-items: center;
+						justify-content: center;
+						color: #FFFFFF;
+						font-size: 56rpx;
+					}
+				}
+
+				.swiperDots {
+					position: absolute;
+					left: 0;
+					right: 0;
+					bottom: 12rpx;
+					display: flex;
+					justify-content: center;
+					height: 10rpx;
+
+					.dot {
+						margin: 0 5rpx;
+						width: 25rpx;
+						height: 4rpx;
+						background: #fff;
+						border-radius: 20rpx;
+						transition: all 0.6s;
+						opacity: 0.5;
+					}
+
+					.active {
+						opacity: 1;
+					}
+				}
+			}
+			.goodsList{
+				width: 95%;
+				margin: 0 auto;
+				.gheader{
+					font-weight: bold;
+					font-size: 26rpx;
+					display: flex;
+					height: 100rpx;
+					align-items: center;
+				}
+				.goods{
+					display: flex;
+					position: relative;
+					padding-bottom: 20rpx;
+					margin-bottom: 20rpx;
+					.left{
+						flex: 0 0 30%;
+						display: flex;
+						.image{
+							width: 140rpx;
+							height: 140rpx;
+							background-color: #f5f5f5;
+							border-radius: 6rpx;
+							overflow: hidden;
+							position: relative;
+							.icon{
+								position: absolute;
+								top: 0;
+								left: 0;
+							}
+							.none{
+								position: absolute;
+								top: 0;
+								left: 0;
+								width: 100%;
+								height: 100%;
+								background-color: rgba(255,255,255,.6);
+								display: flex;
+								align-items: center;
+								justify-content: center;
+								font-size: 26rpx;
+								color: #999;
+							}
+						}
+					}
+					.right{
+						flex: 0 0 70%;
+						.title{
+							color:#343434;
+							font-size:26rpx;
+							font-weight:bold;
+						}
+						.intro{
+							color:#999;
+							font-size:24rpx;
+							overflow: hidden;
+							text-overflow: ellipsis;
+							display: -webkit-box;
+							-webkit-line-clamp: 2;
+							-webkit-box-orient: vertical;
+							padding-top: 4rpx;
+						}
+						.box{
+							display:flex;
+							align-items:center;
+							padding-top: 10rpx;
+							position: relative;
+							.price{
+								color:#343434;
+								font-size:28rpx;
+								font-weight:bold;
+								flex: 0 0 50%
+							}
+							.button{
+								flex: 0 0 50%;
+								display: flex;
+								justify-content: flex-end;
+								.text{
+									background-color: #d3aa79;
+									color: #fff;
+									font-size: 24rpx;
+									padding: 4rpx 16rpx;
+									border-radius: 100rpx;
+								}
+							}
+						}
+					}
+					
+				}
+			}
+		}
+	}
+	.footer{
+		position:fixed;
+		bottom: 140rpx;
+		width:92%;
+		left:0;
+		right: 0;
+		height:80rpx;
+		margin: 0 auto;
+		border-radius: 100rpx;
+		background-color:#fff;
+		display:flex;
+		align-items:center;
+		z-index:899;
+		box-shadow: 0 0 20rpx rgba(0,0,0,.05);
+		.label{
+			color: #fff;
+			width: 100%;
+			height: 100%;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+		}
+		.left{
+			flex: 0 0 70%;
+			display: flex;
+			align-items: center;
+			justify-content: flex-end;
+			height: 100%;
+			.cart{
+				position: absolute;
+				width: 180rpx;
+				height: 100%;
+				left: 0;
+				color: #343434;
+				font-size: 26rpx;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				icon{
+					padding-right: 8rpx;
+				}
+				text{
+					position: absolute;
+					top: -8rpx;
+					right: -12rpx;
+					background-color: #d3aa79;
+					border-radius: 100%;
+					width: 36rpx;
+					height: 36rpx;
+					display: flex;
+					align-items: center;
+					justify-content: center;
+					color: #fff;
+					font-size: 24rpx;
+				}
+			}
+			.price{
+				color:#343434;
+				font-size:30rpx;
+				padding-right: 30rpx;
+				font-weight: bold;
+			}
+		}
+		.right{
+			flex: 0 0 30%;
+			height: 100%;
+			border-top-right-radius: 100rpx;
+			border-bottom-right-radius: 100rpx;
+			overflow: hidden;
+			.button{
+				width: 100%;
+				height: 100%;
+				color: #FFFFFF;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				background-color:#d3aa79;
+			}
+			.none{
+				background-color:#bbbbbb;
+			}
+		}
+	}
+	.footerX{
+		bottom: 166rpx;
+	}
+	
+	.showPopBox{
+		position: fixed;
+		top: 0;
+		left: 0;
+		width: 100%;
+		height: 100%;
+		background-color: rgba(0,0,0,.5);
+		z-index: 970;
+		transition: all 0.3s;
+		.bg{
+			position: absolute;
+			top: 0;
+			left: 0;
+			width: 100%;
+			height: 100%;
+			z-index: 971;
+		}
+		.showContent{
+			position: absolute;
+			z-index: 972;
+			width: 100%;
+			max-height: 600rpx;
+			bottom: 120rpx;
+			background-color: #fff;
+			left: 0;
+			.sheade{
+				width: 100%;
+				background-color: #f2f2f2;
+				font-size: 24rpx;
+				height: 56rpx;
+				display: flex;
+				align-items: center;
+				.left{
+					flex: 0 0 50%;
+					.text{
+						color: #999;
+						padding-left: 20rpx;
+					}
+				}
+				.right{
+					flex: 0 0 50%;
+					.text{
+						color: #999;
+						display: flex;
+						align-items: center;
+						justify-content: flex-end;
+						padding-right: 20rpx;
+						icon{
+							padding-right: 6rpx;
+						}
+					}
+				}
+			}
+			.sconten{
+				max-height: 544rpx;
+				overflow-y: scroll;
+				.goods{
+					width: 95%;
+					margin: 0 auto;
+					display: flex;
+					align-items: center;
+					border-bottom: 1px dashed #f5f5f5;
+					height: 110rpx;
+					.left{
+						flex: 0 0 60%;
+						.title{
+							color:#343434;
+						}
+						.label{
+							color:#999;
+							font-size: 24rpx;
+						}
+					}
+					.right{
+						flex: 0 0 40%;
+						display: flex;
+						align-items: center;
+						justify-content: flex-end;
+						.price{
+							flex: 0 0 40%;
+							color:#343434;
+						}
+						.buy{
+							display: flex;
+							align-items: center;
+							justify-content: center;
+							flex: 0 0 60%;
+							input{
+								text-align: center;
+								color:#343434;
+							}
+							text{
+								color: #999;
+								font-size: 24rpx;
+							}
+						}
+					}
+				}
+			}
+		}
+		.infoContent{
+			position: absolute;
+			z-index: 972;
+			width: 100%;
+			max-height: 55vh;
+			top: 130rpx;
+			background-color: #fff;
+			left: 0;
+			overflow-y: scroll;
+			padding-bottom: 20rpx;
+			padding-top: 10rpx;
+			.label{
+				width: 95%;
+				margin: 0 auto;
+				padding: 12rpx 0;
+				.title{
+					color: #343434;
+					font-size: 26rpx;
+				}
+				.text{
+					color: #999;
+					font-size: 24rpx;
+					padding-top: 4rpx;
+				}
+			}
+			.images{
+				display: flex;
+				align-items: center;
+				flex-wrap: wrap;
+				padding-top: 6rpx;
+				.image{
+					width: 200rpx;
+					height: 200rpx;
+					border: 2rpx solid #f5f5f5;
+					background-color: #f5f5f5;
+					margin-right: 20rpx;
+					position: relative;
+					.text{
+						position: absolute;
+						bottom: 0;
+						left: 0;
+						width: 100%;
+						background-color: rgba(255,255,255,.6);
+						height: 50rpx;
+						display: flex;
+						align-items: center;
+						justify-content: center;
+						color: #666;
+						font-size: 26rpx;
+					}
+				}
+			}
+		}
+		.goodsConten{
+			position: absolute;
+			z-index: 972;
+			width: 80%;
+			background-color: #fff;
+			border-radius: 10rpx;
+			padding-bottom: 20rpx;
+			margin-top: -5vh;
+			box-shadow: 0 10rpx 20rpx rgba(0,0,0,.06);
+			.image{
+				width: 100%;
+				height: 320rpx;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				position: relative;
+				icon{
+					position: absolute;
+				}
+			}
+			.title{
+				width: 90%;
+				margin: 0 auto;
+				padding-top: 10rpx;
+				padding-bottom: 10rpx;
+				color: #343434;
+				font-weight: bold;
+			}
+			.moreBox{
+				width: 90%;
+				margin: 0 auto;
+				.label{
+					padding-bottom: 10rpx;
+					.stitle{
+						padding-bottom: 10rpx;
+						text{
+							color: #999;
+							font-size: 26rpx;
+						}
+					}
+					.specBox{
+						display: flex;
+						flex-wrap: wrap;
+						.spec{
+							border: 1px solid #eee;
+							padding: 8rpx 20rpx;
+							margin-right: 12rpx;
+							font-size: 24rpx;
+							color: #999999;
+						}
+						.active{
+							color: #FFFFFF;
+						}
+					}
+				}
+				.more{
+					padding-bottom: 20rpx;
+					.labtit{
+						color: #999;
+						font-size: 26rpx;
+						padding-top: 10rpx;
+					}
+					.intro{
+						color: #999;
+						font-size: 24rpx;
+					}
+				}
+			}
+			.gfooter{
+				border-top: 1px solid #f5f5f5;
+				padding-top: 20rpx;
+				.price{
+					width: 90%;
+					margin: 0 auto;
+					display: flex;
+					padding: 10rpx 0;
+					align-items: center;
+					justify-content: center;
+					.left{
+						flex: 0 0 65%;
+						.text{
+							color: #d3aa79;
+							font-size: 32rpx;
+							font-weight: bold;
+							display: flex;
+							align-items: center;
+							text{
+								text-decoration: line-through;
+								color: #999;
+								font-size: 26rpx;
+								margin-left: 10rpx;
+								font-weight: normal;
+							}
+						}
+						.label{
+							color: #999;
+							font-size: 24rpx;
+						}
+					}
+					.right{
+						flex: 0 0 35%;
+						display: flex;
+						justify-content: flex-end;
+						.buy{
+							display: flex;
+							align-items: center;
+							input{
+								text-align: center;
+								color:#343434;
+							}
+						}
+					}
+				}
+				.button{
+					width: 90%;
+					margin: 0 auto;
+					margin-top: 20rpx;
+					background-color: #d3aa79;
+					color: #fff;
+					height: 66rpx;
+					display: flex;
+					align-items: center;
+					justify-content: center;
+					border-radius: 100rpx;
+					font-size: 26rpx;
+				}
+				.none{
+					background-color: #cccccc;
+				}
+			}
+		}
+	}
+	// .showShare{
+	// 	position: fixed;
+	// 	width: 100%;
+	// 	height: 100%;
+	// 	top: 0;
+	// 	left: 0;
+	// 	background-color: rgba(0,0,0,.5);
+	// 	z-index: 999;
+	// 	display: flex;
+	// 	align-items: center;
+	// 	justify-content: center;
+	// 	.bg{
+	// 		position: absolute;
+	// 		width: 100%;
+	// 		height: 100%;
+	// 		top: 0;
+	// 		left: 0;
+	// 		z-index: 1000;
+	// 	}
+	// 	.share{
+	// 		position: absolute;
+	// 		width: 500rpx;
+	// 		background-color: #FFFFFF;
+	// 		border-radius: 10rpx;
+	// 		z-index: 1001;
+	// 		transition: all 0.6s;
+	// 		.title{
+	// 			font-weight: bold;
+	// 			display: flex;
+	// 			align-items: center;
+	// 			justify-content: center;
+	// 			padding: 38rpx 0 30rpx;
+	// 		}
+	// 		.box{
+	// 			display: flex;
+	// 			align-items: center;
+	// 			justify-content: center;
+	// 			padding-bottom: 38rpx;
+	// 			.label{
+	// 				flex: 0 0 45%;
+	// 				display: flex;
+	// 				align-items: center;
+	// 				flex-direction: column;
+	// 				justify-content: center;
+	// 				position: relative;
+	// 				.text{
+	// 					font-size: 24rpx;
+	// 				}
+	// 				button{
+	// 					position: absolute;
+	// 					top: 0;
+	// 					left: 0;
+	// 					width: 100%;
+	// 					height: 100%;
+	// 					opacity: 0;
+	// 				}
+	// 			}
+	// 		}
+	// 		.haibao{
+	// 			width: 90%;
+	// 			margin: 0 auto;
+	// 			display: flex;
+	// 			flex-direction: column;
+	// 			align-items: center;
+	// 			image{
+	// 				width: 400rpx;
+	// 				height: 600rpx;
+	// 				border: 1px solid #f5f5f5;
+	// 				border-radius: 6rpx;
+	// 			}
+	// 			.save{
+	// 				color: #FFFFFF;
+	// 				width: 280rpx;
+	// 				height: 60rpx;
+	// 				border-radius: 100rpx;
+	// 				font-size: 24rpx;
+	// 				display: flex;
+	// 				align-items: center;
+	// 				justify-content: center;
+	// 				margin: 30rpx 0;
+	// 			}
+	// 		}
+	// 	}
+	// }
+
+	// .couponsIcon{
+	// 	position: fixed;
+	// 	bottom: 230rpx;
+	// 	width: 100rpx;
+	// 	height: 100rpx;
+	// 	left: 60rpx;
+	// }
+
+	// .showCoupons{
+	// 	position: fixed;
+	// 	width: 100%;
+	// 	height: 100%;
+	// 	top: 0;
+	// 	left: 0;
+	// 	background-color: rgba(0,0,0,.5);
+	// 	z-index: 999;
+	// 	display: flex;
+	// 	align-items: center;
+	// 	justify-content: center;
+	// 	.bg{
+	// 		position: absolute;
+	// 		width: 100%;
+	// 		height: 100%;
+	// 		top: 0;
+	// 		left: 0;
+	// 		z-index: 1000;
+	// 	}
+	// 	.coupons{
+	// 		position: absolute;
+	// 		width: 600rpx;
+	// 		height: 568rpx;
+	// 		border-radius: 10rpx;
+	// 		z-index: 1001;
+	// 		transition: all 0.6s;
+	// 		margin-top: -10%;
+	// 		.headerTitle{
+	// 			position: absolute;
+	// 			top: 76rpx;
+	// 			width: 100%;
+	// 			text-align: center;
+	// 			color: #af8859;
+	// 			font-size: 26rpx;
+	// 		}
+	// 		.listBox{
+	// 		  width: 72%;
+	// 		  margin: 0 auto;
+	// 		  margin-top: 50rpx;
+	// 		  position: absolute;
+	// 		  left: 0;
+	// 		  right: 0;
+	// 		  top: 100rpx;
+	// 		  height: 260rpx;
+	// 		  border-bottom-left-radius: 20%;
+	// 		  border-bottom-right-radius: 20%;
+	// 		  overflow: hidden;
+	// 		  .list{
+	// 		    display:flex;
+	// 		    align-items:center;
+	// 		    width:99%;
+	// 		    height:120rpx;
+	// 		    justify-content:center;
+	// 		    border-radius:4rpx;
+	// 		    position: relative;
+	// 		    overflow:hidden;
+	// 		    padding: 2rpx;
+	// 		    margin: 0 auto;
+	// 		    margin-bottom: 20rpx;
+	// 		    .left{
+	// 		      width:35%;
+	// 		      display:flex;
+	// 		      flex-direction:column;
+	// 		      align-items:center;
+	// 		      justify-content:center;
+	// 		      height:120rpx;
+	// 		      border:2rpx solid #f5f5f5;
+	// 		      border-right:none;
+	// 		      .price{
+	// 		        color:#d3aa79;
+	// 		        font-size:42rpx;
+	// 		        font-weight:500;
+	// 		        display:flex;
+	// 		        text{
+	// 		          font-size:26rpx;
+	// 		          padding-top:6rpx;
+	// 		          padding-right:2rpx;
+	// 		        }
+	// 		      }
+	// 		      .text{
+	// 		        color:#999;
+	// 		        font-size:22rpx;
+	// 		      }
+	// 		    }
+	// 		    .active{
+	// 		      position:absolute;
+	// 		      width:2rpx;
+	// 		      height:80rpx;
+	// 		      left:34%;
+	// 		      border-right:2rpx dashed #eee;
+	// 		      display:flex;
+	// 		      align-items:center;
+	// 		      justify-content:center;
+	// 		      .top{
+	// 		        width:20rpx;
+	// 		        height:20rpx;
+	// 		        background-color:#fff;
+	// 		        border-radius:100%;
+	// 		        position:absolute;
+	// 		        top:-30rpx;
+	// 		        border:2rpx solid #f5f5f5;
+	// 		      }
+	// 		      .buttom{
+	// 		        width:20rpx;
+	// 		        height:20rpx;
+	// 		        background-color:#fff;
+	// 		        border-radius:100%;
+	// 		        position:absolute;
+	// 		        bottom:-30rpx;
+	// 		        border:2rpx solid #f5f5f5;;
+	// 		      }
+	// 		    }
+	// 		    .right{
+	// 		      width:65%;
+	// 		      height:120rpx;
+	// 		      display:flex;
+	// 		      flex-direction:column;
+	// 		      justify-content:center;
+	// 		      border:2rpx solid #f5f5f5;
+	// 		      border-left:none;
+	// 		      .title{
+	// 		        color:#343434;
+	// 		        font-weight:500;
+	// 		        font-size:26rpx;
+	// 		        width:90%;
+	// 		        margin:0 auto;
+	// 		        overflow:hidden;
+	// 		        text-overflow:ellipsis;
+	// 		        white-space:nowrap;
+	// 		      }
+	// 		      .times{
+	// 		        color:#999;
+	// 		        font-size:24rpx;
+	// 		        padding-top:10rpx;
+	// 		        width:90%;
+	// 		        margin:0 auto;
+	// 		        overflow:hidden;
+	// 		        text-overflow:ellipsis;
+	// 		        white-space:nowrap;
+	// 		      }
+	// 		    }
+	// 		  }
+	// 		}
+	// 		.buttonBox{
+	// 		  width: 80%;
+	// 		  margin: 0 auto;
+	// 		  height: 70rpx;
+	// 		  display:flex;
+	// 		  align-items:flex-end;
+	// 		  justify-content:center;
+	// 		  position: absolute;
+	// 		  bottom: 36rpx;
+	// 		  left: 0;
+	// 		  right: 0;
+	// 		  .button{
+	// 		    background-color:#af8859;
+	// 		    width:100%;
+	// 		    height:100%;
+	// 		    display:flex;
+	// 		    align-items:center;
+	// 		    justify-content:center;
+	// 		    color:#fff;
+	// 		    border-radius:4rpx;
+	// 			font-size: 26rpx;
+	// 		  }
+	// 		}
+	// 		.close{
+	// 			position: absolute;
+	// 			left: 0;
+	// 			right: 0;
+	// 			margin: 0 auto;
+	// 			width: 100rpx;
+	// 			display: flex;
+	// 			align-items: center;
+	// 			justify-content: center;
+	// 			height: 100rpx;
+	// 		}
+	// 	}
+	// }
+</style>

+ 4 - 4
src/request/config.js

@@ -11,9 +11,9 @@ if (process.env.UNI_PLATFORM === "h5") {
 }
 
 export default apis == 1 ? {
-	Hhost: "https://shop-api.haocha13.cn/v1/",
+	Hhost: "https://shop-api.haocha13.cn/",
 } : {
-	// Hhost: "https://shop-api.haocha13.cn/v1/",  //正式接口
-	Hhost: "https://test-api.haocha13.cn/v1/",
-	// Hhost: "https://tea-api.otcpay12.top/v1/",
+	// Hhost: "https://shop-api.haocha13.cn/",  //正式接口
+	Hhost: "https://test-api.haocha13.cn/",
+	// Hhost: "https://tea-api.otcpay12.top/",
 }

BIN
src/static/img/load.gif


BIN
src/static/nav/benefits.png


BIN
src/static/nav/benefits_.png


BIN
src/static/nav/home.png


BIN
src/static/nav/home_.png


BIN
src/static/nav/local.png


BIN
src/static/nav/local_.png


BIN
src/static/nav/my.png


BIN
src/static/nav/my_.png


BIN
src/static/nav/qiandao.png


BIN
src/static/nav/qiandao_select.png


BIN
src/static/nav/shouye.png


BIN
src/static/nav/shouye_select.png


BIN
src/static/nav/wode.png


BIN
src/static/nav/wode_select.png


File diff suppressed because it is too large
+ 0 - 0
src/static/utils/qqmap-wx-jssdk.min.js


+ 2 - 3
src/utils/run_now.js

@@ -1,6 +1,6 @@
 import { post } from "@/request/api.js";
 // 此执行为获取实名认证的开关状态
-post('isAuthentication').then(res => {
+post('v1/isAuthentication').then(res => {
     if (res.code === 0) {
         uni.setStorageSync("isAuthentication", res.data.data);
     }
@@ -9,7 +9,7 @@ post('isAuthentication').then(res => {
 // 获取userinfo方法挂载uni公共对象上
 uni.userfun = () => {
     return new Promise((resolve, reject) => {
-        post("/user/userinfo").then((res) => {
+        post("v1/user/userinfo").then((res) => {
             if (res.code === 0) {
                 uni.setStorageSync("userinfo", res.data.data);
                 resolve(res.data.data)
@@ -18,7 +18,6 @@ uni.userfun = () => {
             }
         });
     })
-
 }
 
 // uni.userfun().then(res=>{

Some files were not shown because too many files changed in this diff