Ver código fonte

1. hdApp-拆散订单详情添加打印 2. hdApp -- manifest.json 修改:(1)把 getLocation 声明到 requiredPrivateInfos (2)Android 权限列表加定位权限,iOS 加写定位用途描述 3. hdApp -- 进货下的开启定位修改(使用小程序或App定位权限)

shizhongqi 4 meses atrás
pai
commit
7fa2373065

+ 5 - 1
ghsApp/src/admin/part/info.vue

@@ -114,7 +114,11 @@ export default {
 		},
 		printPart(){
 			printPartOrder({orderSn:this.detailInfo.orderSn}).then(res=>{
-				if(res.code == 1){
+				if(res.data.hasNoPrint == 1){
+					this.$util.confirmModal({content:'请先设置打印机'},() => {
+						this.$util.pageTo({url: "/admin/shop/print"})
+					})
+				}else{
 					this.$msg('打印成功')
 				}
 			})

+ 87 - 17
hdApp/src/admin/home/workbench.vue

@@ -159,15 +159,10 @@
             <block v-else>
               <view v-if="isWithinTwoDays" class="no-supplier-tip">附近暂无批发店</view>
               <block v-else>
-                <view v-if="!shopInfo.lat || !shopInfo.long" class="location-empty-box">
+                <view  class="location-empty-box">
                   <zui-svg-icon icon="general-location" :width="40" :height="40" color="#09C567"/>
                   <view class="location-empty-title">开启定位,查看附近批发店</view>
-                  <button class="location-empty-btn" @click="pageTo({url:'/admin/shop/add?id='+loginInfo.shopId+'&openLocation=1'})">开启</button>
-                </view>
-                <view v-else class="location-empty-box">
-                  <zui-svg-icon icon="general-location" :width="40" :height="40" color="#09C567"/>
-                  <view class="location-empty-title">寻找附近批发店</view>
-                  <button class="location-empty-btn" @click="searchGhs()">寻找</button>
+                  <button class="location-empty-btn" @click="searchGhs()">开启</button>
                 </view>
               </block>
             </block>
@@ -231,6 +226,7 @@
   import {currentShop, uploadShopAvatar} from "@/api/shop";
   import { hasNotice } from "@/api/admin";
   import { APIHOST } from "@/config";
+  import permision from "@/utils/wa-permission_1.1/permission.js";
   export default {
     name: "workbench",
     mixins: [autoUpdateMixins],
@@ -547,17 +543,91 @@
             })
           }
       },
-      searchGhs(){
-        searchNearbyGhs().then(res=>{
-          if(res.code == 1){
-            uni.setStorageSync('supplier_search_time', Date.now()) //设置缓存时间--记录当前查找附近批发店的时间
-            //重新刷新列表
-            this.getGHSList()
-            this.$msg('查找成功')
-          }else{
-            this.$msg(res.msg)
+      async searchGhs(){
+        console.log('searchGhs start')
+
+        // #ifdef APP-PLUS
+        // App 端先显式申请权限,避免部分机型 getLocation 挂起无回调
+        if (plus.os.name === 'Android') {
+          const permissionRes = await permision.requestAndroidPermission('android.permission.ACCESS_FINE_LOCATION')
+          if (permissionRes !== 1) {
+            this.$msg('请开启定位权限后重试')
+            if (permissionRes === -1) {
+              permision.gotoAppPermissionSetting()
+            }
+            return
           }
-        })
+        }
+        if (!permision.checkSystemEnableLocation()) {
+          this.$msg('请先开启系统定位服务')
+          return
+        }
+        // #endif
+
+        let hasLocationCallback = false
+        const timeoutTimer = setTimeout(() => {
+          if (!hasLocationCallback) {
+            console.log('getLocation timeout')
+            this.$msg('定位超时,请确认系统定位已开启后重试')
+          }
+        }, 5000)
+
+        const handleLocationSuccess = (res, locationType) => {
+          hasLocationCallback = true
+          clearTimeout(timeoutTimer)
+          console.log('getLocation success', locationType, res)
+          searchNearbyGhs({
+            locationType: locationType,
+            lat: res.latitude,
+            long: res.longitude
+          }).then(ret=>{
+            if(ret.code == 1){
+              uni.setStorageSync('supplier_search_time', Date.now()) //设置缓存时间--记录当前查找附近批发店的时间
+              //重新刷新列表
+              this.getGHSList()
+              this.$msg('查找成功')
+            }else{
+              this.$msg(ret.msg)
+            }
+          })
+        }
+        const requestLocation = (locationType) => {
+          uni.getLocation({
+            type: locationType,
+            success: (res) => {
+              handleLocationSuccess(res, locationType)
+            },
+            fail: (err) => {
+              console.log('getLocation fail', locationType, err)
+              // 部分安卓机型不支持 gcj02,自动降级到 wgs84 再试一次
+              if (locationType === 'gcj02' && (
+                err.code == 18 ||
+                err.errCode == 18 ||
+                (err.errMsg && (
+                  err.errMsg.indexOf('not support gcj02') > -1 ||
+                  err.errMsg.indexOf('Not Support CoordsType') > -1
+                ))
+              )) {
+                requestLocation('wgs84')
+                return
+              }
+              hasLocationCallback = true
+              clearTimeout(timeoutTimer)
+              uni.showToast({ title: '定位失败,请检查定位权限', icon: 'none' })
+            },
+            complete: () => {
+              console.log('getLocation complete', locationType)
+            }
+          })
+        }
+        // iOS 机型在部分运行环境不支持 gcj02,直接使用 wgs84
+        // #ifdef APP-PLUS
+        if (plus.os.name === 'iOS') {
+          requestLocation('wgs84')
+          return
+        }
+        // #endif
+        requestLocation('gcj02')
       }
     }
   };

+ 18 - 3
hdApp/src/admin/part/info.vue

@@ -60,10 +60,13 @@
 				</div>
 			</view>
 		</view>
+		<view class="app-footer open_btn">
+			<view @click="printPart" class="admin-button-com big blue">打印</view>
+		</view>
 	</view>
 </template>
 <script>
-import { getPartFullInfo } from "@/api/part";
+import { getPartFullInfo, printPartOrder } from "@/api/part";
 import productMins from "@/mixins/product";
 import TuiListCell from "@/components/plugin/list-cell";
 export default {
@@ -108,6 +111,19 @@ export default {
 			const { data } = await getPartFullInfo({orderSn:orderSn})
 			this.detailInfo = data.info
 			this.itemList = data.itemList
+		},
+		printPart(){
+			printPartOrder({orderSn:this.detailInfo.orderSn}).then(res=>{
+				if(res.code == 1){
+					if(res.data.hasNoPrint == 1){
+						this.$util.confirmModal({content:'请先设置打印机'},() => {
+							this.$util.pageTo({url: "/admin/shop/print"})
+						})
+					}else{
+						this.$msg('打印成功')
+					}
+				}
+			})
 		}
 	}
 };
@@ -311,8 +327,7 @@ export default {
 		height: 70upx;
 		line-height: 70upx;
 		text-align: center;
-		color: #3385ff;
-		border: 1upx solid #3385ff;
+		color: #ffffff;
 		&.active{
 			color: #666666;
 			border: 1upx solid #ccc;

+ 4 - 0
hdApp/src/api/part/index.js

@@ -10,4 +10,8 @@ export const partList = data => {
 
 export const getPartFullInfo = data => {
 	return https.get('/part/get-full-info', data)
+}
+
+export const printPartOrder = data => {
+	return https.get('/part/print-order', data)
 }

+ 8 - 4
hdApp/src/manifest.json

@@ -36,7 +36,9 @@
             "android" : {
                 "permissions" : [
                     "<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
-                    "<uses-permission android:name=\"android.permission.CAMERA\"/>"
+                    "<uses-permission android:name=\"android.permission.CAMERA\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>"
                 ],
                 "autoSdkPermissions" : false,
                 "abiFilters" : [ "armeabi-v7a", "arm64-v8a", "x86" ],
@@ -57,7 +59,8 @@
                 "privacyDescription" : {
                     "NSPhotoLibraryUsageDescription" : "该应用需要读取您的相册,以便支持您修改头像、门店图片或花材图片",
                     "NSPhotoLibraryAddUsageDescription" : "该应用需要读取您的相册,以便支持您修改头像、门店图片或花材图片",
-                    "NSCameraUsageDescription" : "该应用需要获取您的摄像头权限,以便支持您直接拍照上传头像、门店图片或花材图片"
+                    "NSCameraUsageDescription" : "该应用需要获取您的摄像头权限,以便支持您直接拍照上传头像、门店图片或花材图片",
+                    "NSLocationWhenInUseUsageDescription" : "该应用需要获取您的位置信息,用于查找附近批发店"
                 },
                 "idfa" : false,
                 "capabilities" : {
@@ -216,11 +219,12 @@
                 "desc" : "请点击确定"
             }
         },
+        "requiredPrivateInfos" : [ "getLocation" ],
         "optimization" : {
             "subPackages" : true
         },
-        "lazyCodeLoading":"requiredComponents",
-       "uniStatistics" : {
+        "lazyCodeLoading" : "requiredComponents",
+        "uniStatistics" : {
             "enable" : false
         },
         "unipush" : {

+ 6 - 2
开发http/hdApp/src/manifest.json

@@ -36,7 +36,9 @@
             "android" : {
                 "permissions" : [
                     "<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
-                    "<uses-permission android:name=\"android.permission.CAMERA\"/>"
+                    "<uses-permission android:name=\"android.permission.CAMERA\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>"
                 ],
                 "autoSdkPermissions" : false,
                 "abiFilters" : [ "armeabi-v7a", "arm64-v8a", "x86" ],
@@ -57,7 +59,8 @@
                 "privacyDescription" : {
                     "NSPhotoLibraryUsageDescription" : "该应用需要读取您的相册,以便支持您修改头像、门店图片或花材图片",
                     "NSPhotoLibraryAddUsageDescription" : "该应用需要读取您的相册,以便支持您修改头像、门店图片或花材图片",
-                    "NSCameraUsageDescription" : "该应用需要获取您的摄像头权限,以便支持您直接拍照上传头像、门店图片或花材图片"
+                    "NSCameraUsageDescription" : "该应用需要获取您的摄像头权限,以便支持您直接拍照上传头像、门店图片或花材图片",
+                    "NSLocationWhenInUseUsageDescription" : "该应用需要获取您的位置信息,用于查找附近批发店"
                 },
                 "idfa" : false,
                 "capabilities" : {
@@ -216,6 +219,7 @@
                 "desc" : "请点击确定"
             }
         },
+        "requiredPrivateInfos" : [ "getLocation" ],
         "optimization" : {
             "subPackages" : true
         },

+ 6 - 2
开发https/hdApp/src/manifest.json

@@ -36,7 +36,9 @@
             "android" : {
                 "permissions" : [
                     "<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
-                    "<uses-permission android:name=\"android.permission.CAMERA\"/>"
+                    "<uses-permission android:name=\"android.permission.CAMERA\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>"
                 ],
                 "autoSdkPermissions" : false,
                 "abiFilters" : [ "armeabi-v7a", "arm64-v8a", "x86" ],
@@ -57,7 +59,8 @@
                 "privacyDescription" : {
                     "NSPhotoLibraryUsageDescription" : "该应用需要读取您的相册,以便支持您修改头像、门店图片或花材图片",
                     "NSPhotoLibraryAddUsageDescription" : "该应用需要读取您的相册,以便支持您修改头像、门店图片或花材图片",
-                    "NSCameraUsageDescription" : "该应用需要获取您的摄像头权限,以便支持您直接拍照上传头像、门店图片或花材图片"
+                    "NSCameraUsageDescription" : "该应用需要获取您的摄像头权限,以便支持您直接拍照上传头像、门店图片或花材图片",
+                    "NSLocationWhenInUseUsageDescription" : "该应用需要获取您的位置信息,用于查找附近批发店"
                 },
                 "idfa" : false,
                 "capabilities" : {
@@ -216,6 +219,7 @@
                 "desc" : "请点击确定"
             }
         },
+        "requiredPrivateInfos" : [ "getLocation" ],
         "optimization" : {
             "subPackages" : true
         },

+ 6 - 2
线上/hdApp/src/manifest.json

@@ -36,7 +36,9 @@
             "android" : {
                 "permissions" : [
                     "<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
-                    "<uses-permission android:name=\"android.permission.CAMERA\"/>"
+                    "<uses-permission android:name=\"android.permission.CAMERA\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>"
                 ],
                 "autoSdkPermissions" : false,
                 "abiFilters" : [ "armeabi-v7a", "arm64-v8a", "x86" ],
@@ -57,7 +59,8 @@
                 "privacyDescription" : {
                     "NSPhotoLibraryUsageDescription" : "该应用需要读取您的相册,以便支持您修改头像、门店图片或花材图片",
                     "NSPhotoLibraryAddUsageDescription" : "该应用需要读取您的相册,以便支持您修改头像、门店图片或花材图片",
-                    "NSCameraUsageDescription" : "该应用需要获取您的摄像头权限,以便支持您直接拍照上传头像、门店图片或花材图片"
+                    "NSCameraUsageDescription" : "该应用需要获取您的摄像头权限,以便支持您直接拍照上传头像、门店图片或花材图片",
+                    "NSLocationWhenInUseUsageDescription" : "该应用需要获取您的位置信息,用于查找附近批发店"
                 },
                 "idfa" : false,
                 "capabilities" : {
@@ -216,6 +219,7 @@
                 "desc" : "请点击确定"
             }
         },
+        "requiredPrivateInfos" : [ "getLocation" ],
         "optimization" : {
             "subPackages" : true
         },