Browse Source

增加barcode扫描功能

panxingxin 5 years ago
parent
commit
707b88b17b

+ 1 - 1
README.md

@@ -1 +1 @@
-sgApp
+sgApp

+ 1 - 1
ionic.config.json

@@ -1,5 +1,5 @@
 {
-  "name": "SG扫描",
+  "name": "sgApp",
   "integrations": {
     "cordova": {}
   },

File diff suppressed because it is too large
+ 2527 - 1364
package-lock.json


+ 12 - 2
package.json

@@ -1,5 +1,5 @@
 {
-  "name": "SG扫描",
+  "name": "sgApp",
   "version": "0.0.1",
   "author": "Ionic Framework",
   "homepage": "https://ionicframework.com/",
@@ -11,6 +11,10 @@
     "lint": "ng lint",
     "e2e": "ng e2e"
   },
+  "repository": {
+    "type": "git",
+    "url": "https://gitee.com/panxingxin/sgApp.git"
+  },
   "private": true,
   "dependencies": {
     "@angular/common": "^7.2.2",
@@ -22,6 +26,7 @@
     "@angular/router": "^7.2.2",
     "@ionic-native/app-update": "^5.16.0",
     "@ionic-native/app-version": "^5.16.0",
+    "@ionic-native/barcode-scanner": "^5.16.0",
     "@ionic-native/bluetooth-le": "^5.15.1",
     "@ionic-native/bluetooth-serial": "^5.15.1",
     "@ionic-native/camera": "^5.5.1",
@@ -36,6 +41,7 @@
     "@ionic-native/keyboard": "^5.9.0",
     "@ionic-native/local-notifications": "^5.16.0",
     "@ionic-native/photo-viewer": "^5.16.0",
+    "@ionic-native/qr-scanner": "^5.16.0",
     "@ionic-native/splash-screen": "^5.0.0",
     "@ionic-native/status-bar": "^5.0.0",
     "@ionic/angular": "^4.1.0",
@@ -57,6 +63,7 @@
     "core-js": "^2.5.4",
     "crypto-js": "^3.1.9-1",
     "hammerjs": "^2.0.8",
+    "phonegap-plugin-barcodescanner": "^8.1.0",
     "rxjs": "~6.5.1",
     "tslib": "^1.9.0",
     "zone.js": "~0.8.29"
@@ -116,7 +123,10 @@
       },
       "cordova-plugin-file-transfer": {},
       "cordova-plugin-file": {},
-      "com-sarriaroman-photoviewer": {}
+      "com-sarriaroman-photoviewer": {},
+      "phonegap-plugin-barcodescanner": {
+        "ANDROID_SUPPORT_V4_VERSION": "27.+"
+      }
     },
     "platforms": [
       "browser",

+ 1 - 1
src/app/app.component.html

@@ -83,7 +83,7 @@
           </ion-list-header>
           <ion-menu-toggle autoHide="false">
             <ion-item routerLink="/store-sample-pending">
-              <ion-icon slot="start" name="timer"></ion-icon>
+              <ion-icon slot="start" name="alarm"></ion-icon>
               <ion-label>
                 待备样
               </ion-label>

+ 1 - 1
src/app/app.component.ts

@@ -148,7 +148,7 @@ export class AppComponent {
       this.statusBar.styleDefault();
       this.splashScreen.hide();
       await this.getVersionNumber()
-      await this.update.isUpdate()
+      // await this.update.isUpdate()
     });
   }
   //android通过返回按钮退出应用

+ 2 - 2
src/app/app.module.ts

@@ -20,7 +20,7 @@ import { Keyboard } from '@ionic-native/keyboard/ngx';
 import { queryForm } from '../providers/query'
 import { AppVersion } from '@ionic-native/app-version/ngx'; 
 import { WebSocketService } from '../providers/WebSocketService';
-import { UserData } from '../providers/user-data';
+import { BarcodeScanner } from '@ionic-native/barcode-scanner/ngx';
 // import { BluetoothLE } from '@ionic-native/bluetooth-le/ngx'
 // import { BluetoothSerial } from '@ionic-native/bluetooth-serial/ngx';
 import { NativeService } from "../providers/native.service"
@@ -42,12 +42,12 @@ import { FileTransfer, FileTransferObject } from '@ionic-native/file-transfer/ng
     PhotoService,
     Camera,
     PhotoViewer,
-    UserData,
     Device,
     File,
     FileOpener,
     FileTransfer,
     FileTransferObject,
+    BarcodeScanner,
     // BluetoothLE,
     // BluetoothSerial,
     Keyboard,

+ 5 - 0
src/app/drawTab/drawTab.page.html

@@ -6,6 +6,11 @@
     <ion-title>
       开单号
     </ion-title>
+    <ion-buttons slot="end">
+      <ion-button (click)="qrscan()">
+        <ion-icon name="qr-scanner"></ion-icon>
+      </ion-button>
+    </ion-buttons>
   </ion-toolbar>
 </ion-header>
 

+ 9 - 21
src/app/drawTab/drawTab.page.ts

@@ -4,9 +4,8 @@ import { HTTP } from '@ionic-native/http/ngx';
 import { from } from 'rxjs';
 import { finalize } from 'rxjs/operators';
 import { Storage } from '@ionic/storage'
-import { Camera, CameraOptions } from '@ionic-native/camera/ngx';
-import { PhotoService, Photo } from '../../services/photo.service';
 import { Keyboard } from '@ionic-native/keyboard/ngx';
+import { BarcodeScanner } from '@ionic-native/barcode-scanner/ngx';
 
 @Component({
   selector: 'app-drawTab',
@@ -14,15 +13,13 @@ import { Keyboard } from '@ionic-native/keyboard/ngx';
   styleUrls: ['drawTab.page.scss']
 })
 export class drawTabPage {
-  // public photos: Photo[] = [];
   private currentCode: string
   private ssfCode: string
   private access_token: string
   constructor(private nativeHttp: HTTP,
-    // public photoService: PhotoService,
+    private barcodeScanner: BarcodeScanner,
     private storage: Storage,
     private keyboard: Keyboard,
-    private camera: Camera,
     private toastCtrl: ToastController) { }
 
   @ViewChild('drawInput') drawInput;
@@ -53,22 +50,6 @@ export class drawTabPage {
     
     console.log(this.keyboard)
   }
-  // takePicture() {
-  //   const options: CameraOptions = {
-  //     quality: 100,
-  //     destinationType: this.camera.DestinationType.DATA_URL,
-  //     encodingType: this.camera.EncodingType.JPEG,
-  //     mediaType: this.camera.MediaType.PICTURE
-  //   }
-
-  //   this.camera.getPicture(options).then((imageData) => {
-  //     this.photos.unshift({
-  //       data: 'data:image/jpeg;base64,' + imageData
-  //     }); }, (err) => {
-  //     // Handle error
-  //     console.log("Camera issue: " + err);
-  //   });
-  // }
   // 获取扫描信息
   async getInfo() {
     // let loading = await this.loadingCtrl.create();
@@ -91,4 +72,11 @@ export class drawTabPage {
         await toast.present();
       });
   }
+  qrscan() {
+    this.barcodeScanner.scan().then(barcodeData => {
+      this.ssfCode = barcodeData.text
+    }).catch(err => {
+      console.log('Error', err);
+    });
+  }
 }

+ 4 - 0
src/app/enter-store/enter-store.page.html

@@ -8,6 +8,10 @@
       <ion-button [disabled]="storeList.length===0" (click)="saveStore()">
         保存
       </ion-button>
+      /
+      <ion-button (click)="qrscan()">
+        <ion-icon name="qr-scanner"></ion-icon>
+      </ion-button>
     </ion-buttons>
   </ion-toolbar>
 </ion-header>

+ 11 - 0
src/app/enter-store/enter-store.page.ts

@@ -4,6 +4,7 @@ import { Storage } from '@ionic/storage'
 import { UserData } from '../../providers/user-data';
 import { NgForm } from '@angular/forms';
 import { Keyboard } from '@ionic-native/keyboard/ngx';
+import { BarcodeScanner } from '@ionic-native/barcode-scanner/ngx';
 
 @Component({
   selector: 'app-enter-store',
@@ -21,6 +22,7 @@ export class EnterStorePage implements OnInit {
   entergoodsCode: any
   constructor(
     private storage: Storage,
+    private barcodeScanner: BarcodeScanner,
     public userData: UserData,
     private keyboard: Keyboard,
     private alertController: AlertController, ) { }
@@ -130,6 +132,15 @@ export class EnterStorePage implements OnInit {
   // 保存并生成货号
   async saveStore() {
     await this.userData.saveStoreDetail(this.storeList)
+    this.initialData()
     // this.scanInput.setFocus();
   }
+
+  qrscan() {
+    this.barcodeScanner.scan().then(barcodeData => {
+      this.scanCode = barcodeData.text
+    }).catch(err => {
+      console.log('Error', err);
+    });
+  }
 }

+ 5 - 0
src/app/infoTab/infoTab.page.html

@@ -6,6 +6,11 @@
     <ion-title>
       样品扫描
     </ion-title>
+    <ion-buttons slot="end">
+      <ion-button (click)="qrscan()">
+        <ion-icon name="qr-scanner"></ion-icon>
+      </ion-button>
+    </ion-buttons>
   </ion-toolbar>
 </ion-header>
 

+ 11 - 3
src/app/infoTab/infoTab.page.ts

@@ -1,10 +1,11 @@
 import { Component, OnInit, ViewChild } from '@angular/core';
 import { from } from 'rxjs';
 import { HTTP } from '@ionic-native/http/ngx';
-import { LoadingController, ToastController } from '@ionic/angular';
+import { ToastController } from '@ionic/angular';
 import { finalize } from 'rxjs/operators';
 import { Keyboard } from '@ionic-native/keyboard/ngx';
 import { Storage } from '@ionic/storage'
+import { BarcodeScanner } from '@ionic-native/barcode-scanner/ngx';
 
 @Component({
   selector: 'app-infoTab',
@@ -12,7 +13,6 @@ import { Storage } from '@ionic/storage'
   styleUrls: ['./infoTab.page.scss'],
 })
 export class infoTabPage implements OnInit {
-  private ssfCode: string
   private pCode: string
   private currentpCode: string
   private supplierName: string
@@ -21,7 +21,7 @@ export class infoTabPage implements OnInit {
   private ssfId: any
   private access_token: string
   constructor(private nativeHttp: HTTP,
-    private loadingCtrl: LoadingController,
+    private barcodeScanner: BarcodeScanner,
     private storage: Storage,
     private keyboard: Keyboard,
     private toastCtrl: ToastController) { }
@@ -105,4 +105,12 @@ export class infoTabPage implements OnInit {
         await toast.present();
       });
   }
+
+  qrscan() {
+    this.barcodeScanner.scan().then(barcodeData => {
+      this.pCode = barcodeData.text
+    }).catch(err => {
+      console.log('Error', err);
+    });
+  }
 }

+ 4 - 0
src/app/store-qc-scanning/store-qc-scanning.page.html

@@ -11,6 +11,10 @@
       <ion-button [disabled]="storeQCList.length===0" (click)="generateQC()">
         生成
       </ion-button>
+      /
+      <ion-button (click)="qrscan()">
+        <ion-icon name="qr-scanner"></ion-icon>
+      </ion-button>
     </ion-buttons>
   </ion-toolbar>
 </ion-header>

+ 13 - 2
src/app/store-qc-scanning/store-qc-scanning.page.ts

@@ -6,6 +6,7 @@ import { UserData } from '../../providers/user-data';
 import { Camera, CameraOptions } from '@ionic-native/camera/ngx';
 import { commonService } from '../../providers/common.service';
 import { ActivatedRoute } from '@angular/router'
+import { BarcodeScanner } from '@ionic-native/barcode-scanner/ngx';
 
 
 @Component({
@@ -20,6 +21,7 @@ export class StoreQCScanningPage implements OnInit {
   defaultHref = ''
   storeQCDetailList = []
   constructor(private router: Router,
+    private barcodeScanner: BarcodeScanner,
     private activeRoute: ActivatedRoute,
     public commonService: commonService,
     private storage: Storage,
@@ -56,7 +58,6 @@ export class StoreQCScanningPage implements OnInit {
     } else {
       this.storage.remove('storeQCList')
     }
-    this.storage.remove('store-pending') // 离开页面清除scancode
   }
 
   initialData() {
@@ -79,6 +80,7 @@ export class StoreQCScanningPage implements OnInit {
 
   // 获取扫描详情
   async getStoreQCDetail(item) {
+    this.storeQCDetailList = []
     this.keyboard.hide()
     if (item) {
       this.scanCode = item.scanCode
@@ -128,6 +130,8 @@ export class StoreQCScanningPage implements OnInit {
       }
     }
     await this.userData.createQC(this.storeQCList)
+    this.initialData()
+    this.storage.remove('storeQCList')
   }
 
   // 记录数据
@@ -153,7 +157,6 @@ export class StoreQCScanningPage implements OnInit {
       // this.scpCodes.push(i.scpCode)
     }
     this.addQClog()
-    this.storage.remove('store-pending')
     this.initialData()
   }
 
@@ -192,6 +195,14 @@ export class StoreQCScanningPage implements OnInit {
     });
   }
 
+  qrscan() {
+    this.barcodeScanner.scan().then(barcodeData => {
+      this.scanCode = barcodeData.text
+    }).catch(err => {
+      console.log('Error', err);
+    });
+  }
+
   deletePicture(qc) {
     qc.imgData = ''
     qc.qcimgUrl = ''

+ 5 - 0
src/app/store-sample-binding/store-sample-binding.page.html

@@ -4,6 +4,11 @@
       <ion-menu-button></ion-menu-button>
     </ion-buttons>
     <ion-title>货架货号绑定</ion-title>
+    <ion-buttons slot="end">
+      <ion-button (click)="qrscan()">
+        <ion-icon name="qr-scanner"></ion-icon>
+      </ion-button>
+    </ion-buttons>
   </ion-toolbar>
 </ion-header>
 

+ 16 - 1
src/app/store-sample-binding/store-sample-binding.page.ts

@@ -1,6 +1,7 @@
 import { Component, OnInit, ViewChild } from '@angular/core';
 import { UserData } from '../../providers/user-data';
 import { Storage } from '@ionic/storage'
+import { BarcodeScanner } from '@ionic-native/barcode-scanner/ngx';
 
 @Component({
   selector: 'app-store-sample-binding',
@@ -11,7 +12,9 @@ export class StoreSampleBindingPage implements OnInit {
 
   shelves: string
   code: string
-  constructor(private storage: Storage, public userData: UserData) { }
+  constructor(private storage: Storage,
+    private barcodeScanner: BarcodeScanner,
+    public userData: UserData) { }
 
   @ViewChild('shelvesInput') shelvesInput;
   @ViewChild('codeInput') codeInput;
@@ -44,4 +47,16 @@ export class StoreSampleBindingPage implements OnInit {
       this.codeInput.setFocus();
     }
   }
+
+  qrscan() {
+    this.barcodeScanner.scan().then(barcodeData => {
+      if(!this.shelves) {
+        this.shelves = barcodeData.text
+      } else {
+        this.code = barcodeData.text
+      }
+    }).catch(err => {
+      console.log('Error', err);
+    });
+  }
 }

+ 5 - 5
src/app/store-sample-pending/store-sample-pending.page.html

@@ -4,11 +4,11 @@
       <ion-menu-button></ion-menu-button>
     </ion-buttons>
     <ion-title>待备样</ion-title>
-    <!-- <ion-buttons slot="end" *ngIf="scanCode">
-      <ion-button (click)="managePending()">
-        备货完成
+    <ion-buttons slot="end">
+      <ion-button (click)="qrscan()">
+        <ion-icon name="qr-scanner"></ion-icon>
       </ion-button>
-    </ion-buttons> -->
+    </ion-buttons>
   </ion-toolbar>
 </ion-header>
 
@@ -23,7 +23,7 @@
   </ion-refresher>
 
   <ion-item>
-    <ion-label>样品扫描:</ion-label>
+    <ion-label>样品扫描备样:</ion-label>
     <ion-input #scanInput clear-on-edit (ionChange)="getStoreSampleDetail()" [(ngModel)]="scanCode"></ion-input>
   </ion-item>
 

+ 22 - 12
src/app/store-sample-pending/store-sample-pending.page.ts

@@ -1,7 +1,8 @@
 import { Component, OnInit } from '@angular/core';
 import { UserData } from '../../providers/user-data';
-import {Keyboard} from "@ionic-native/keyboard/ngx";
+import { Keyboard } from "@ionic-native/keyboard/ngx";
 import { commonService } from '../../providers/common.service'
+import { BarcodeScanner } from '@ionic-native/barcode-scanner/ngx';
 
 @Component({
   selector: 'app-store-sample-pending',
@@ -14,9 +15,10 @@ export class StoreSamplePendingPage implements OnInit {
   current: number = 1
   size: number = 10
   constructor(
-      private keyboard: Keyboard,
-      public commonService: commonService,
-      public userData: UserData) { }
+    private keyboard: Keyboard,
+    private barcodeScanner: BarcodeScanner,
+    public commonService: commonService,
+    public userData: UserData) { }
   scanCode: string
   ngOnInit() {
 
@@ -34,10 +36,10 @@ export class StoreSamplePendingPage implements OnInit {
   async getList() {
     let data = await this.userData.getStoreSamplePendingList(this.current, this.size)
     this.storeSampleLists = data
-    for(let i of this.storeSampleLists) {
-      i['lendName'] = i.lend ? '已借出': '未借出'
-      i['statusName'] = i.active ? '正常': '已销毁'
-      if(i["pictures"] && i["pictures"].length!==0) {
+    for (let i of this.storeSampleLists) {
+      i['lendName'] = i.lend ? '已借出' : '未借出'
+      i['statusName'] = i.active ? '正常' : '已销毁'
+      if (i["pictures"] && i["pictures"].length !== 0) {
         i["imgsrc"] = i["pictures"][0].smallPicture
       }
     }
@@ -50,10 +52,10 @@ export class StoreSamplePendingPage implements OnInit {
   // 通过code获取仓库样品详情
   async getStoreSampleDetail() {
     this.keyboard.hide()
-      let data = await this.userData.getStoreSampleDetail(this.scanCode)
-      let code = JSON.parse(data).data.code
-      await this.userData.changeShelfLend(code)
-      this.getList();
+    let data = await this.userData.getStoreSampleDetail(this.scanCode)
+    let code = JSON.parse(data).data.code
+    await this.userData.changeShelfLend(code)
+    this.getList();
   }
 
   // 备货完成
@@ -61,5 +63,13 @@ export class StoreSamplePendingPage implements OnInit {
     await this.userData.changeShelfLend(storeSample.code)
     this.getList()
   }
+
+  qrscan() {
+    this.barcodeScanner.scan().then(barcodeData => {
+      this.scanCode = barcodeData.text
+    }).catch(err => {
+      console.log('Error', err);
+    });
+  }
 }
 

+ 3 - 2
src/providers/user-data.ts

@@ -424,9 +424,9 @@ export class UserData {
         headers)).pipe(
           finalize(() => loading.dismiss())
         ).subscribe(async data => {
-          if (data.data === null) {
+          if (JSON.parse(data.data).code === 1) {
             const toast = await this.toastCtrl.create({
-              message: '无数据',
+              message: JSON.parse(data.data).msg,
               duration: 1000,
               position: 'top'
             });
@@ -581,6 +581,7 @@ export class UserData {
         headers)).pipe(
           finalize(() => loading.dismiss())
         ).subscribe(async data => {
+          console.log(data)
           let message = '';
           if (JSON.parse(data.data).code == 0) {
             message = '操作成功';