DaMowang преди 2 години
родител
ревизия
9595e60417

+ 6 - 6
src/App.vue

@@ -1,12 +1,8 @@
 <script>
 export default {
     globalData: {
-        userInfo: {},
-        shopInfo: {
-            shop_name: "茶付宝",
-            shop_image: "",
-            desc: "茶付宝",
-        },
+        shopInfo: {},
+        version: ""
     },
     onLaunch() {
         var logs = uni.getStorageSync("logs") || [];
@@ -19,6 +15,10 @@ export default {
             shop_name: accountInfo.nickname,
             shop_image: accountInfo.icon
         }
+        // #ifdef MP-WEIXIN || MP-QQ
+        const miniProgram  = uni.getAccountInfoSync();
+        this.version = miniProgram.miniProgram.version;
+        // #endif
     },
     onShow() {},
     onHide() {},

+ 6 - 3
src/components/image-cropper/image-cropper.vue

@@ -41,9 +41,6 @@
 <!-- #ifdef APP-VUE || H5 -->
 <script module="cropper" lang="renderjs">
 import cropper from './image-cropper.js';
-export default {
-    mixins: [cropper]
-}
 </script>
 <!-- #endif -->
 <!-- #ifdef MP-WEIXIN || MP-QQ -->
@@ -57,12 +54,18 @@ const IMG_SIZE = 300;
 
 export default {
     name: "image-cropper",
+    
     // #ifdef MP-WEIXIN
     options: {
         // 表示启用样式隔离,在自定义组件内外,使用 class 指定的样式将不会相互影响
         styleIsolation: "isolated"
     },
     // #endif
+
+    // #ifdef APP-VUE || H5
+    mixins: [cropper],
+    // #endif
+
     props: {
         /** 图片资源地址 */
         src: {

+ 2 - 2
src/components/navigationCustom/navigation-custom.vue

@@ -54,10 +54,10 @@ export default {
 		}
 	},
 	updated() {
-		console.log(this.config)
+		// console.log(this.config)
 	},
 	mounted() {
-		console.log(this.config)
+		// console.log(this.config)
 	},
 	props: {
 		config: {

+ 6 - 6
src/pages.json

@@ -469,12 +469,6 @@
 						"enablePullDownRefresh": false,
 						"disableScroll": true
 					}
-				},
-				{
-					"path": "my/addShop",
-					"style": {
-						"navigationBarTitleText": "商户资料提交"
-					}
 				}
 			]
 		},
@@ -501,6 +495,12 @@
 						"navigationBarTitleText": ""
 					}
 				},
+				{
+					"path": "settledMerchant/addShop",
+					"style": {
+						"navigationBarTitleText": "商户资料提交"
+					}
+				},
 				{
 					"path": "settledMerchant/myShop",
 					"style": {

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

@@ -85,15 +85,15 @@
             </view>
         </view>
         <view class="fz_w_text">让数字经济赋能美好生活!</view>
-        <!-- 隐私指引 -->
-        <xh-privacy title="隐私保护指引" color="#18bb88"></xh-privacy>
         <!-- 城市选择 -->
         <h-address @select="selectaddress" :visible.sync="showAddress" />
+        <!-- 隐私指引 -->
+        <!-- <xh-privacy title="隐私保护指引" color="#18bb88"></xh-privacy> -->
     </div>
 </template>
 <script>
+// import xhPrivacy from "@/components/xh-privacy/xh-privacy.vue"; //隐私保护指引
 import swiperBanner from "@/components/swiperBanner/index.vue"; //轮播
-import xhPrivacy from "@/components/xh-privacy/xh-privacy.vue"; //隐私保护指引
 import hAddress from "@/components/h-address/address.vue"; //城市选择
 import tabs from '@/static/js/tabs' //专区入口
 import { post } from "@/request/api.js";
@@ -101,8 +101,8 @@ export default {
     name: "Appindex",
     components: {
         swiperBanner, //轮播
-        xhPrivacy,
         hAddress
+        // xhPrivacy,
     },
     data() {
         return {
@@ -119,7 +119,7 @@ export default {
     onLoad(option) {
         this.getToCity()
         this.loadData()
-        uni.Luserfun()
+        // uni.Luserfun()
     },
     onShow() {
         this.getBanner(); //获取轮播图
@@ -139,10 +139,6 @@ export default {
         NavToGoodsDetail(id, type) {
             this.goto("/pages/product/p_details", { id, type });
         },
-        // 跳转公告列表页
-        goNoticeList() {
-            this.goto("/pages/consultation-list/index");
-        },
         // 获取轮播图
         getBanner() {
             post("v1/banner").then((res) => {
@@ -162,6 +158,10 @@ export default {
                 }
             });
         },
+        // 跳转公告列表页
+        goNoticeList() {
+            this.goto("/pages/consultation-list/index");
+        },
         // 获取公告列表
         getAnnounce() {
             post("v1/notice", { is_index: 1 }).then((res) => {

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

@@ -130,7 +130,7 @@
                         <image class="fun_img" src="/static/my/store.png"></image>
                         <view class="fun_text">我的店铺</view>
                     </navigator>
-                    <navigator v-if="merchantSetlet.settled" class="fun_list flex_c flex_ac" url="/pagesB/my/addShop" hover-class="none">
+                    <navigator v-if="merchantSetlet.settled" class="fun_list flex_c flex_ac" url="/pagesC/settledMerchant/addShop" hover-class="none">
                         <image class="fun_img" src="/static/my/merchant.png"></image>
                         <view class="fun_text">商家入驻</view>
                     </navigator>
@@ -190,7 +190,10 @@
                 </view>
             </view>
         </view>
-        <view class="fz_w_text">让数字经济赋能美好生活!</view>
+        <view class="fz_w_text">
+            <view>让数字经济赋能美好生活!</view>
+            <view v-if="app.globalData.version">{{ app.globalData.version }}</view>
+        </view>
         <!-- 授权 -->
         <authorize-module ref="autho" :shopInfo="shopInfo" @authGetTelSuccess="onauthGetTelSuccess" />
         <!-- 激活升级 -->
@@ -231,7 +234,6 @@ export default {
         if (!token) this.login()
         else {
             this.getuserInfo();
-            this.merchantSet();
         }
     },
     methods: {
@@ -290,6 +292,7 @@ export default {
                 this.userinfo = res;
             } else this.login();
             this.localInfo = await uni.Luserfun()
+            this.merchantSet();
         },
         // 跳转到实名页面
         goToAutonym() {

+ 6 - 9
src/pages/my/userinfo.vue

@@ -22,16 +22,11 @@ export default {
             },
         };
     },
-    onShow() {},
-    onLoad() {
-        this.loadData();
+    onShow() {
+        this.getuserInfo();
     },
+    onLoad() {},
     methods: {
-        loadData() {
-            let da = uni.getStorageSync("userinfo");
-            this.formDa.nickname = da.nickname;
-            this.formDa.head_pic = da.head_pic;
-        },
         upheadimg() {
             post("v1/user/setup", this.formDa);
             let that = this;
@@ -56,7 +51,9 @@ export default {
             });
         },
         async getuserInfo() {
-            await uni.userfun();
+            let da = await uni.userfun();
+            this.formDa.nickname = da.nickname;
+            this.formDa.head_pic = da.head_pic;
         },
     },
 };

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

@@ -100,10 +100,11 @@ export default {
         },
     },
     onLoad(da) {
-        this.getLocation();
         this.getToCity();
     },
-    onShow() {},
+    onShow() {
+        this.getLocation();
+    },
     mounted() {},
     onReachBottom() {
         if (this.Query.page < this.pageData.last_page) this.getList();

+ 1 - 0
src/pagesB/cinema/choiceMovie.vue

@@ -181,6 +181,7 @@ page {
         left: 0;
         right: 0;
         width: 100%;
+        min-height: 100%;
         // transform: translateX(-50%);
         filter: blur(15px);
         -webkit-filter: blur(15px);

+ 10 - 8
src/pagesB/cinema/selectSeat.vue

@@ -9,9 +9,11 @@
             </view>
             <movable-area :style="'height:'+(seatRow*(seatSize + 10) + 80)+'px;width: 100vw;top:132rpx'" class="pt-f left-0">
                 <movable-view :style="'width: 100vw;height:'+(seatRow*(seatSize + 10) + 80)+'px;'" :inertia="true" :scale="true" :scale-min="0.95" :scale-max="2" direction="all" @change="onMove" @scale="onScale">
-                    <view class="Stage dp-f jc-c ai-c fz-22 color-333">{{SeatInfo.hallName}}</view>
-                    <view style="width: 100rpx;height: 30rpx;" class="m-0-a mt-48 dp-f jc-c ai-c fz-20 color-999 b-1 br-5">银幕中央</view>
-                    <view class="pt-f pa-v-2 b-d-1" :style="'height:'+seatRow*(20+seatSize*pxNum)+'rpx;top:120rpx;width:0'"></view>
+                    <view class="head-info flex_c flex_jb">
+                        <view class="Stage dp-f jc-c ai-c fz-22 color-333">{{SeatInfo.hallName}}</view>
+                        <view style="width: 100rpx;height: 30rpx;" class="m-0-a dp-f jc-c ai-c fz-20 color-999 b-1 br-5">银幕中央</view>
+                    </view>
+                    <view class="pt-f pa-v-2 b-d-1" :style="'height:'+seatRow*(20+seatSize*pxNum)+'rpx;top:110rpx;width:0'"></view>
                     <view v-for="(item,index) in seatArray" :key="index" class="dp-f jc-c mt-20" :style="'width:'+boxWidth+'px;height:'+seatSize+'px'">
                         <view v-for="(seat,col) in item" :key="col" class="dp-ib" :style="'width:'+seatSize+'px;height:'+seatSize+'px'" @click="handleChooseSeat(index,col)">
                             <image v-if="seat.type===0" class="w-100 h-100" src="https://test-api.haocha13.cn/static/img/optional.png" mode="aspectFit"></image>
@@ -19,7 +21,7 @@
                             <image v-else-if="seat.type===2" class="w-100 h-100" src="https://test-api.haocha13.cn/static/img/sold.png" mode="aspectFit"></image>
                         </view>
                     </view>
-                    <view class="pt-f bg-line br-15 over-h" :style="'left: '+(10-moveX/scale)+'px;top:116rpx;width:30rpx;'">
+                    <view class="pt-f bg-line br-15 over-h" :style="'left: '+(10-moveX/scale)+'px;top:110rpx;width:30rpx;'">
                         <view class="w-100 mt-20 dp-f ai-c jc-c fz-22 color-fff" :style="'height:'+seatSize+'px;'" v-for="(m,mindex) in mArr" :key="mindex">{{m}}</view>
                         <view :style="'height: 20rpx;'"></view>
                     </view>
@@ -500,6 +502,10 @@ export default {
     }
 }
 
+.head-info{
+    height: 110rpx;    
+}
+
 .p-all-10 {
     padding: 10rpx;
 }
@@ -660,10 +666,6 @@ export default {
     margin: 0 auto;
 }
 
-.mt-48 {
-    margin-top: 48rpx;
-}
-
 .fz-20 {
     font-size: 20rpx;
 }

+ 1 - 1
src/pagesB/orderingfood/orderlist.vue

@@ -90,7 +90,6 @@
 import { post } from "@/request/api.js";
 export default {
     name: "orderlist",
-    props: {},
     components: {},
     data() {
         return {
@@ -174,6 +173,7 @@ export default {
         },
     },
     onLoad(da) {
+        if(da.type) this.activeKey = da.type
         this.getorderList()
         this.getList()
     },

+ 0 - 0
src/pagesB/components/centerPopup/centerPopup.vue → src/pagesC/components/centerPopup/centerPopup.vue


+ 1 - 1
src/pagesB/components/up/index.vue → src/pagesC/components/up/index.vue

@@ -12,7 +12,7 @@
     </div>
 </template>
 <script>
-import centerPopup from "@/pagesB/components/centerPopup/centerPopup"
+import centerPopup from "@/pagesC/components/centerPopup/centerPopup"
 export default {
     name: "upimgList",
     props: {

+ 34 - 18
src/pagesB/my/addShop.vue → src/pagesC/settledMerchant/addShop.vue

@@ -17,6 +17,9 @@
             <uni-forms-item label="商家logo" required name="logo">
                 <upimg v-model="formData.logo"/>
             </uni-forms-item>
+            <uni-forms-item label="商家资质" required name="qualification">
+                <upimg v-model="formData.qualification" :count="6"/>
+            </uni-forms-item>
             <uni-forms-item label="商家账号" required name="mobile">
                 <uni-easyinput v-model="formData.mobile" type="text" placeholder="请输入商家账号,即茶付宝账号" />
             </uni-forms-item>
@@ -44,7 +47,12 @@
                 <uni-easyinput v-model="formData.address" type="text" placeholder="请输入详细地址" />
             </uni-forms-item>
             <uni-forms-item label="经度" required name="longitude">
-                <uni-easyinput v-model="formData.longitude" type="text" placeholder="请输入经度" />
+                <div class="lat-item flex_r flex_jb flex_ac">
+                    <div class="inp_l">
+                        <uni-easyinput v-model="formData.longitude" type="text" placeholder="请输入经度" />
+                    </div>
+                    <div class="lat-btn" @click="getLocation">获取定位</div>
+                </div>
             </uni-forms-item>
             <uni-forms-item label="纬度" required name="latitude">
                 <uni-easyinput v-model="formData.latitude" type="text" placeholder="请输入纬度" />
@@ -67,22 +75,22 @@
             <uni-forms-item label="银行卡号" required name="card_no">
                 <uni-easyinput v-model="formData.card_no" type="text" placeholder="请输入银行卡号" />
             </uni-forms-item>
-            <uni-forms-item label="开户名" required name="account_name">
+            <uni-forms-item label="开户名" required name="account_name">
                 <uni-easyinput v-model="formData.account_name" type="text" placeholder="请输入开户姓名" />
             </uni-forms-item>
-            <uni-forms-item label="身份证号" required name="card_id">
+            <!-- <uni-forms-item label="身份证号" required name="card_id">
                 <uni-easyinput v-model="formData.card_id" type="text" placeholder="请输入身份证号" />
-            </uni-forms-item>
-            <uni-forms-item label="开户手机" required name="open_phone">
+            </uni-forms-item> -->
+            <!-- <uni-forms-item label="开户手机" required name="open_phone">
                 <uni-easyinput v-model="formData.open_phone" type="text" placeholder="请输入开户手机" />
-            </uni-forms-item>
+            </uni-forms-item> -->
             <uni-forms-item label="平台截图" name="other_type">
                 <uni-data-select v-model="formData.other_type" :localdata="TypeDesc.other_type" placeholder="请选择平台"></uni-data-select>
             </uni-forms-item>
             <uni-forms-item label="上传截图">
                 <upimg v-model="formData.other_images"/>
             </uni-forms-item>
-            <uni-forms-item label="店铺图集">
+            <uni-forms-item label="店铺图集" required name="atlas">
                 <upimg v-model="formData.atlas" :count="6"/>
             </uni-forms-item>
             <uni-forms-item label="入驻协议" required name="settled">
@@ -97,7 +105,7 @@
 <script>
 import { post } from "@/request/api.js";
 import selectAddress from "@/components/lcw-select-address/lcw-select-address";
-import upimg from "@/pagesB/components/up/index"
+import upimg from "@/pagesC/components/up/index"
 export default {
     name: "add-shop",
     props: {},
@@ -109,6 +117,7 @@ export default {
             rules: {
                 name: { rules: [{ required: true, errorMessage: '请输入店铺名称' }] },
                 logo: { rules: [{ required: true, errorMessage: '请上传店铺logo' }] },
+                qualification: { rules: [{ required: true, errorMessage: '请上传商家资质' }] },
                 mobile: { rules: [{ required: true, errorMessage: '请输入商家账号,即茶付宝账号' }] },
                 business: { rules: [{ required: true, errorMessage: '请选择商家分类' }] },
                 attribute: { rules: [{ required: true, errorMessage: '请选择商家属性' }] },
@@ -124,9 +133,10 @@ export default {
                 billing_type: { rules: [{ required: true, errorMessage: '请选择开票类型' }] },
                 bank: { rules: [{ required: true, errorMessage: '请输入开户行' }] },
                 card_no: { rules: [{ required: true, errorMessage: '请输入银行卡号' }] },
-                account_name: { rules: [{ required: true, errorMessage: '请输入开户姓名' }] },
-                card_id: { rules: [{ required: true, errorMessage: '请输入身份证号' }] },
-                open_phone: { rules: [{ required: true, errorMessage: '请输入开户手机' }] },
+                account_name: { rules: [{ required: true, errorMessage: '请输入开户名称' }] },
+                // card_id: { rules: [{ required: true, errorMessage: '请输入身份证号' }] },
+                // open_phone: { rules: [{ required: true, errorMessage: '请输入开户手机' }] },
+                atlas: { rules: [{ required: true, errorMessage: '请上传店铺图集' }] },
                 settled: { rules: [{ required: true, errorMessage: '请上传入驻协议' }] },
             },
             TypeDesc: {},
@@ -197,13 +207,6 @@ export default {
 </script>
 <style lang="scss">
 .add-shop {
-    // .uni-forms-item {
-    //     margin-bottom: 25rpx !important;
-    // }
-    // .uni-forms-item__error{
-    //     display: none;
-    // }
-
     .uni-forms-item__label {
         color: #222;
     }
@@ -254,11 +257,24 @@ export default {
             color: #888;
         }
     }
+
     .suffix{
         position: absolute;
         top: 20rpx;
         right: 22rpx;
     }
+
+    .lat-item{
+        .inp_l{
+            width: calc(100% - 168rpx);
+        }
+        .lat-btn{
+            background-color: #17bb87;
+            color: #fff;
+            padding: 3rpx 16rpx;
+            border-radius: 8rpx;
+        }
+    }
 }
 .btn{
     color: #fff;

+ 8 - 6
src/pagesC/settledMerchant/index.vue

@@ -49,8 +49,8 @@ export default {
         return {
             list: [],
             Query: {
-                latitude: 113.9367,
-                longitude: 22.5325,
+                latitude: "",
+                longitude: "",
                 page: 1,
                 rows: 20
             },
@@ -111,10 +111,12 @@ export default {
         },
     },
     onLoad(da) {
-        this.oldKeywordList = this.getLS("oldKeywords") || [];
-        this.getLocation();
-        if (da.key) this.navSearch(decodeURIComponent(da.key))
-        else this.getList();
+        this.getLocation()
+        setTimeout(() => {
+            this.oldKeywordList = this.getLS("oldKeywords") || [];
+            if (da.key) this.navSearch(decodeURIComponent(da.key))
+            else this.getList();
+        }, 60);
     },
     onShow() {},
     mounted() {},

+ 22 - 6
src/pagesC/settledMerchant/merchant.vue

@@ -18,9 +18,9 @@
             <div class="h_address flex_r flex_jb flex_ac">
                 <div class="hil">
                     <div class="h_tags flex_r flex_ac flex_wrap">
-                        <span class="tag">距您 {{ $h.Div(merchantInfo.distance, 1000).toFixed(2) }} km</span>
+                        <span class="tag">距您 {{ $h.Div(Number(detail.distance), 1000).toFixed(2) || 0 }} km</span>
                     </div>
-                    <div class="address">{{ merchantInfo.address }}</div>
+                    <div class="address">{{ detail.address }}</div>
                 </div>
                 <div class="iconfont ico" @click="openm">&#xe6b3;</div>
             </div>
@@ -72,13 +72,17 @@ export default {
         };
     },
     methods: {
-        merchant(){
+        async merchant(){
+            let adres = await uni.Location();
             post("v1/merchant/detail", {
                 merchant_id: this.merchantID,
+                longitude: adres.lng,
+                latitude: adres.lat
             }).then((res) => {
                 if (res.code == 0) {
                     let da = res.data;
                     if(da.atlas) da.atlas = JSON.parse(da.atlas)
+                    else da.atlas = []
                     this.detail = da
                 }
             });
@@ -149,14 +153,26 @@ export default {
                 }
             });
         },
+        sceneToObject(scene) {
+            scene = decodeURIComponent(scene);
+            let ret = {}
+            let regParam = /([^&=]+)=([\w\W]*?)(&|$|#)/g
+            let strParam = scene;
+            let result
+            while ((result = regParam.exec(strParam)) != null) {
+                ret[result[1]] = result[2]
+            }
+            return ret;
+        },
     },
     onLoad(da) {
+        console.log("参数:", da);
+        if(da.scene) da = this.sceneToObject(da.scene);
+        console.log("参数:", da);
         this.merchantID = da.id;
         let token = uni.getStorageSync("token");
         if (!token) this.login();
-        else {
-            this.merchant();
-        }
+        else this.merchant();
     },
     onShow() {
         this.merchantInfo = this.getLS("merchant")

+ 12 - 3
src/pagesC/settledMerchant/myBusiness.vue

@@ -8,7 +8,7 @@
         
         <div class="list" v-if="list.length">
             <div class="list-item" v-for="(i,s) in list" :key="s">
-                <div class="head_info_row flex_r flex_ac">
+                <div class="head_info_row flex_r flex_ac flex_jb">
                     <image class="logo" :src="i.logo" />
                     <div class="head_name">
                         <div class="name">{{ i.name }}</div>
@@ -17,6 +17,7 @@
                             <span class="commentScore">{{i.score}}分</span>
                         </div>
                     </div>
+                    <div class="twocode iconfont" @click="showcode({id:i.merchant_id,name:i.name})">&#xe635;</div>
                 </div>
                 <div class="p1 flex_r">
                     <div>商户姓名:{{i.contact}}</div>
@@ -29,15 +30,17 @@
             </div>
         </div>
         <empty v-else/>
+        <create-code ref="createCode" />
     </div>
 </template>
 <script>
 import empty from "@/pagesC/components/empty/empty"
+import createCode from "@/pagesC/components/createCode/index"
 import { post } from "@/request/api.js";
 export default {
     name: "myBusiness",
     props: {},
-    components: {empty},
+    components: {empty,createCode},
     data() {
         return {
             tabs: [
@@ -75,6 +78,9 @@ export default {
             uni.showLoading({title: '加载中'})
             this.Query.status = va;
             this.getList(1)
+        },
+        showcode(da) {
+            this.$refs.createCode.showCanvas(da)
         }
     },
     onLoad(da) {
@@ -128,11 +134,11 @@ export default {
             width: 120rpx;
             height: 110rpx;
             border-radius: 12rpx;
-            margin-right: 25rpx;
             border: 1px solid #e5e5e5;
         }
     
         .head_name {
+            width: calc(100% - 220rpx);
             .name {
                 font-size: 36rpx;
                 font-weight: 600;
@@ -144,6 +150,9 @@ export default {
                 font-size: 24rpx;
             }
         }
+        .twocode {
+            font-size: 60rpx;
+        }
     }
     .p1{
         font-size: 24rpx;

+ 23 - 3
src/pagesC/settledMerchant/pay.vue

@@ -17,7 +17,7 @@
                 <span>{{ discounts.chabao || 0 }}</span>
             </div>
         </div>
-        <div class="btn" @click="pay">确认买单</div>
+        <div class="btn" @click="onpay">确认买单</div>
     </div>
 </template>
 
@@ -42,6 +42,21 @@ export default {
                 }
             })
         },
+        onpay(){
+            let that = this
+            uni.showModal({
+                title: "温馨提示",
+                content: "你将支付该订单,请确认。",
+                showCancel: true,
+                confirmText: "确认",
+                confirmColor: "#f02f2f",
+                success(res) {
+                    if (res.confirm) {
+                        that.pay();
+                    }
+                },
+            });
+        },
         pay(){
             post("v1/merchant/orders",this.Body).then(res=>{
                 if (res.code == 0 && res.data.prepayid) {
@@ -49,11 +64,16 @@ export default {
                         if (!rea) {
                             this.$toast(res.msg)
                             setTimeout(() => {
-                                uni.navigateBack({ delta: 1 })
+                                this.goto("/pagesB/orderingfood/orderlist",{type:2})
                             }, 1500);
                         } else {}
                     });
-                }else if (res.code == 0) uni.navigateBack({ delta: 1 })
+                }else if (res.code == 0) {
+                    this.$toast(res.msg)
+                    setTimeout(() => {
+                        this.goto("/pagesB/orderingfood/orderlist",{type:2})
+                    }, 1500);
+                }
             })
         }
     },

+ 3 - 1
src/utils/run_now.js

@@ -39,7 +39,9 @@ uni.Location = () => {
         let adres = getCache("location");
         if (!adres) {
             uni.getLocation({
-                type: 'wgs84',
+                type: 'gcj02',
+                // type: 'wgs84',
+                isHighAccuracy: true,
                 success(res) {
                     let location = { lat: res.latitude, lng: res.longitude };
                     setCache("location", location, 60 * 2);