Browse Source

图片多选,版本1.0.23

panxingxin 5 years ago
parent
commit
fa0ce20ad7

+ 1 - 1
config.xml

@@ -1,5 +1,5 @@
 <?xml version='1.0' encoding='utf-8'?>
-<widget id="com.ionicframework.sgZongLi" version="1.0.22" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
+<widget id="com.ionicframework.sgZongLi" version="1.0.23" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
     <name>SG综礼</name>
     <description>An awesome Ionic/Cordova app.</description>
     <author email="hi@ionicframework.com" href="http://ionicframework.com/">Ionic Framework Team</author>

+ 1 - 1
dev.xml

@@ -1,5 +1,5 @@
 <?xml version='1.0' encoding='utf-8'?>
-<widget id="com.ionicframework.devSgZongLi" version="1.0.22" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
+<widget id="com.ionicframework.devSgZongLi" version="1.0.23" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
     <name>SG测试</name>
     <description>An awesome Ionic/Cordova app.</description>
     <author email="hi@ionicframework.com" href="http://ionicframework.com/">Ionic Framework Team</author>

+ 20 - 0
package-lock.json

@@ -728,6 +728,21 @@
         "@types/cordova": "^0.0.34"
       }
     },
+    "@ionic-native/base64": {
+      "version": "5.18.0",
+      "resolved": "https://registry.npmjs.org/@ionic-native/base64/-/base64-5.18.0.tgz",
+      "integrity": "sha512-KaZlqPeK1gomyNU/TCSM1QXNiM7b1mj66dubQXdUZlae6vmVwmdA/KggX9/IPuS82qxgotjT+wyjrNHGmt93XQ==",
+      "requires": {
+        "@types/cordova": "^0.0.34"
+      },
+      "dependencies": {
+        "@types/cordova": {
+          "version": "0.0.34",
+          "resolved": "https://registry.npmjs.org/@types/cordova/-/cordova-0.0.34.tgz",
+          "integrity": "sha1-6nrd907Ow9dimCegw54smt3HPQQ="
+        }
+      }
+    },
     "@ionic-native/bluetooth-le": {
       "version": "5.16.0",
       "resolved": "https://registry.npmjs.org/@ionic-native/bluetooth-le/-/bluetooth-le-5.16.0.tgz",
@@ -2561,6 +2576,11 @@
       "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
       "dev": true
     },
+    "com-badrit-base64": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/com-badrit-base64/-/com-badrit-base64-0.2.0.tgz",
+      "integrity": "sha1-u9hgM6oeGs/37kRqbIDIvUL03Tc="
+    },
     "com-sarriaroman-photoviewer": {
       "version": "1.2.4",
       "resolved": "https://registry.npmjs.org/com-sarriaroman-photoviewer/-/com-sarriaroman-photoviewer-1.2.4.tgz",

+ 4 - 1
package.json

@@ -27,6 +27,7 @@
     "@ionic-native/app-update": "^5.16.0",
     "@ionic-native/app-version": "^5.16.0",
     "@ionic-native/barcode-scanner": "^5.16.0",
+    "@ionic-native/base64": "^5.18.0",
     "@ionic-native/bluetooth-le": "^5.15.1",
     "@ionic-native/bluetooth-serial": "^5.15.1",
     "@ionic-native/camera": "^5.5.1",
@@ -48,6 +49,7 @@
     "@ionic-native/status-bar": "^5.0.0",
     "@ionic/angular": "^4.1.0",
     "@ionic/storage": "^2.2.0",
+    "com-badrit-base64": "^0.2.0",
     "com-sarriaroman-photoviewer": "^1.2.4",
     "cordova-android": "^8.1.0",
     "cordova-browser": "6.0.0",
@@ -132,7 +134,8 @@
       },
       "cordova-plugin-image-picker": {},
       "cordova-plugin-ionic-keyboard": {},
-      "cordova-plugin-datepicker": {}
+      "cordova-plugin-datepicker": {},
+      "com-badrit-base64": {}
     },
     "platforms": [
       "browser",

+ 17 - 1
platforms/android/android.json

@@ -79,6 +79,10 @@
             {
               "xml": "<feature name=\"DatePickerPlugin\"><param name=\"android-package\" value=\"com.plugin.datepicker.DatePickerPlugin\" /></feature>",
               "count": 1
+            },
+            {
+              "xml": "<feature name=\"Base64\"><param name=\"android-package\" value=\"com.badrit.Base64.Base64Plugin\" /></feature>",
+              "count": 1
             }
           ],
           "/widget": [
@@ -296,6 +300,9 @@
     },
     "cordova-plugin-datepicker": {
       "PACKAGE_NAME": "com.ionicframework.sgZongLi"
+    },
+    "com-badrit-base64": {
+      "PACKAGE_NAME": "com.ionicframework.sgZongLi"
     }
   },
   "dependent_plugins": {},
@@ -724,6 +731,14 @@
       "clobbers": [
         "datePicker"
       ]
+    },
+    {
+      "id": "com-badrit-base64.Base64",
+      "file": "plugins/com-badrit-base64/www/Base64.js",
+      "pluginId": "com-badrit-base64",
+      "clobbers": [
+        "navigator.Base64"
+      ]
     }
   ],
   "plugin_metadata": {
@@ -747,6 +762,7 @@
     "phonegap-plugin-barcodescanner": "8.1.0",
     "cordova-plugin-image-picker": "1.1.1",
     "cordova-plugin-ionic-keyboard": "2.2.0",
-    "cordova-plugin-datepicker": "0.9.3"
+    "cordova-plugin-datepicker": "0.9.3",
+    "com-badrit-base64": "0.2.0"
   }
 }

+ 1 - 1
platforms/android/app/src/main/AndroidManifest.xml

@@ -1,5 +1,5 @@
 <?xml version='1.0' encoding='utf-8'?>
-<manifest android:hardwareAccelerated="true" android:versionCode="10021" android:versionName="1.0.21" package="com.ionicframework.sgZongLi" xmlns:android="http://schemas.android.com/apk/res/android">
+<manifest android:hardwareAccelerated="true" android:versionCode="10022" android:versionName="1.0.22" package="com.ionicframework.sgZongLi" xmlns:android="http://schemas.android.com/apk/res/android">
     <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
     <uses-permission android:name="android.permission.INTERNET" />
     <application android:hardwareAccelerated="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:networkSecurityConfig="@xml/network_config" android:supportsRtl="true">

+ 91 - 0
platforms/android/app/src/main/java/com/badrit/Base64/Base64Plugin.java

@@ -0,0 +1,91 @@
+/**
+ * 
+ * Phonegap Base64 plugin
+ * 
+ * Version 1.0
+ * 
+ * Hazem Hagrass 2013
+ *
+ */
+
+package com.badrit.Base64;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.util.ArrayList;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import android.content.Intent;
+import android.database.Cursor;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.net.Uri;
+import android.text.Html;
+import android.util.Base64;
+
+import org.apache.cordova.CallbackContext;
+import org.apache.cordova.CordovaPlugin;
+import org.apache.cordova.LOG;
+
+public class Base64Plugin extends CordovaPlugin {
+
+	@Override
+	public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
+		if ("encodeFile".equals(action)) {
+			
+			try {
+				JSONObject parameters = args.getJSONObject(0);
+				if (parameters != null) {
+					String base64String = encodeFile(parameters.getString("filePath"));
+					callbackContext.success(base64String);
+				}
+			} catch (Exception e) {
+
+			}
+			
+			return true;
+		}
+		return false; 
+	}
+
+	private String encodeFile(String filePath) {
+		String imgStr = "";
+		try {
+			Uri _uri = Uri.parse(filePath);
+			if (_uri != null && "content".equals(_uri.getScheme())) {
+				Cursor cursor = cordova
+						.getActivity()
+						.getContentResolver()
+						.query(_uri,
+								new String[] { android.provider.MediaStore.Images.ImageColumns.DATA },
+								null, null, null);
+				cursor.moveToFirst();
+				filePath = cursor.getString(0);
+				cursor.close();
+			} else {
+				filePath = _uri.getPath();
+			}
+			File imageFile = new File(filePath);
+			if (!imageFile.exists())
+				return imgStr;
+
+			byte[] bytes = new byte[(int) imageFile.length()];
+
+			FileInputStream fileInputStream = new FileInputStream(imageFile);
+			fileInputStream.read(bytes);
+
+			imgStr = Base64.encodeToString(bytes, Base64.DEFAULT);
+			imgStr = "data:image/*;charset=utf-8;base64," + imgStr;
+		} catch (Exception e) {
+			return imgStr;
+		}
+		return imgStr;		
+	}
+	
+
+}

+ 4 - 1
platforms/android/app/src/main/res/xml/config.xml

@@ -1,5 +1,5 @@
 <?xml version='1.0' encoding='utf-8'?>
-<widget id="com.ionicframework.sgZongLi" version="1.0.21" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
+<widget id="com.ionicframework.sgZongLi" version="1.0.22" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
     <feature name="PhotoViewer">
         <param name="android-package" value="com.sarriaroman.PhotoViewer.PhotoViewer" />
     </feature>
@@ -56,6 +56,9 @@
     <feature name="DatePickerPlugin">
         <param name="android-package" value="com.plugin.datepicker.DatePickerPlugin" />
     </feature>
+    <feature name="Base64">
+        <param name="android-package" value="com.badrit.Base64.Base64Plugin" />
+    </feature>
     <feature name="BluetoothSerial">
         <param name="android-package" value="com.megster.cordova.BluetoothSerial" />
     </feature>

+ 10 - 1
platforms/android/platform_www/cordova_plugins.js

@@ -424,6 +424,14 @@ cordova.define('cordova/plugin_list', function(require, exports, module) {
       "clobbers": [
         "datePicker"
       ]
+    },
+    {
+      "id": "com-badrit-base64.Base64",
+      "file": "plugins/com-badrit-base64/www/Base64.js",
+      "pluginId": "com-badrit-base64",
+      "clobbers": [
+        "navigator.Base64"
+      ]
     }
   ];
   module.exports.metadata = {
@@ -447,6 +455,7 @@ cordova.define('cordova/plugin_list', function(require, exports, module) {
     "phonegap-plugin-barcodescanner": "8.1.0",
     "cordova-plugin-image-picker": "1.1.1",
     "cordova-plugin-ionic-keyboard": "2.2.0",
-    "cordova-plugin-datepicker": "0.9.3"
+    "cordova-plugin-datepicker": "0.9.3",
+    "com-badrit-base64": "0.2.0"
   };
 });

+ 0 - 1
prod.sh

@@ -13,7 +13,6 @@ echo '{
 
 #sed -e "s@1@$cversion_old@g" -i version.json
 
-npm install
 ionic cordova build android --prod
 
 mv  ./platforms/android/app/build/outputs/apk/debug/app-debug.apk  ./sgApp.apk

+ 1 - 1
prod.xml

@@ -1,5 +1,5 @@
 <?xml version='1.0' encoding='utf-8'?>
-<widget id="com.ionicframework.sgZongLi" version="1.0.22" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
+<widget id="com.ionicframework.sgZongLi" version="1.0.23" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
     <name>SG综礼</name>
     <description>An awesome Ionic/Cordova app.</description>
     <author email="hi@ionicframework.com" href="http://ionicframework.com/">Ionic Framework Team</author>

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

@@ -14,7 +14,8 @@ import { HTTP } from '@ionic-native/http/ngx';
 import { IonicStorageModule  } from '@ionic/storage'
 import { Camera } from '@ionic-native/camera/ngx';
 import { DatePicker } from '@ionic-native/date-picker/ngx';
-// import { ImagePicker } from '@ionic-native/image-picker/ngx';
+import { ImagePicker } from '@ionic-native/image-picker/ngx';
+import { Base64 } from '@ionic-native/base64/ngx';
 import { PhotoViewer } from '@ionic-native/photo-viewer/ngx';
 import { PhotoService } from '../services/photo.service';
 import { HttpserviceService} from '../services/httpservice.service';
@@ -41,8 +42,9 @@ import { FileTransfer, FileTransferObject } from '@ionic-native/file-transfer/ng
     SplashScreen,
     LoginGuardGuard,
     PhotoService,
+    Base64,
     Camera,
-    // ImagePicker,
+    ImagePicker,
     DatePicker,
     PhotoViewer,
     Device,

+ 30 - 1
src/app/contract-detail/contract-detail.page.ts

@@ -4,6 +4,8 @@ import { UserData } from '../../providers/user-data';
 import { Camera } from '@ionic-native/camera/ngx';
 import { CameraSetting } from '../../providers/camera-photo'
 import { commonService } from '../../providers/common.service'
+import { ImagePicker, ImagePickerOptions } from '@ionic-native/image-picker/ngx';
+import { Base64 } from '@ionic-native/base64/ngx';
 
 @Component({
   selector: 'app-contract-detail',
@@ -20,6 +22,8 @@ export class ContractDetailPage implements OnInit {
   sscId=''
   constructor(
     private camera: Camera,
+    private base64: Base64,
+    private imagePicker: ImagePicker,
     public commonService: commonService,
     private cameraSetting: CameraSetting,
     private storage: Storage,
@@ -63,7 +67,32 @@ export class ContractDetailPage implements OnInit {
   }
 
   choosePicture(contract) {
-    this.showPicture(contract, this.cameraSetting.albumOption)
+    const options: ImagePickerOptions = {  
+      maximumImagesCount: 10,  
+      outputType: 1,  
+      width: 1800,
+      height: 1350,
+      quality: 90  
+    };  
+
+    this.imagePicker.getPictures(options).then((results) => {
+      for (var i = 0; i < results.length; i++) {
+        this.base64.encodeFile(results[i]).then((base64File: string) => {
+          contract.imgList.push(
+            base64File
+          )
+          let imageData = base64File.split('base64,')[1]
+          if (contract.imageData) {
+            contract.imageData = contract.imageData + ',' + imageData
+          } else {
+            contract.imageData = '' + imageData
+          }
+        }, (err) => {
+          console.log(err);
+        });
+      }
+    }, (err) => { });
+    // this.showPicture(contract, this.cameraSetting.albumOption)
   }
 
   takePicture(contract) {

+ 29 - 15
src/app/sample-detail/sample-detail.page.ts

@@ -4,7 +4,8 @@ import { UserData } from '../../providers/user-data';
 import { CameraSetting } from '../../providers/camera-photo'
 import { commonService } from '../../providers/common.service'
 import { Camera } from '@ionic-native/camera/ngx';
-// import { ImagePicker, ImagePickerOptions } from '@ionic-native/image-picker/ngx';
+import { ImagePicker, ImagePickerOptions } from '@ionic-native/image-picker/ngx';
+import { Base64 } from '@ionic-native/base64/ngx';
 // import { PhotoService, Photo } from '../services/photo.service';
 
 @Component({
@@ -17,9 +18,10 @@ export class SampleDetailPage implements OnInit {
   public photos = [];
   constructor(
     // public photoService: PhotoService,
+    private base64: Base64,
     private camera: Camera,
     private cameraSetting: CameraSetting,
-    // private imagePicker: ImagePicker,
+    private imagePicker: ImagePicker,
     private storage: Storage,
     public commonService: commonService,
     public userData: UserData) { }
@@ -73,20 +75,32 @@ export class SampleDetailPage implements OnInit {
   }
 
   choosePicture(sample) {
-    // const options: ImagePickerOptions = {  
-    //   maximumImagesCount: 5,  
-    //   outputType: 1,  
-    //   width: 1800,
-    //   height: 1350,
-    //   quality: 90  
-    // };  
+    const options: ImagePickerOptions = {  
+      maximumImagesCount: 10,  
+      outputType: 1,  
+      width: 1800,
+      height: 1350,
+      quality: 90  
+    };  
 
-    // this.imagePicker.getPictures(options).then((results) => {
-    //   for (var i = 0; i < results.length; i++) {
-    //       console.log('Image URI: ' + results[i]);
-    //   }
-    // }, (err) => { });
-    this.showPicture(sample, this.cameraSetting.albumOption)
+    this.imagePicker.getPictures(options).then((results) => {
+      for (var i = 0; i < results.length; i++) {
+        this.base64.encodeFile(results[i]).then((base64File: string) => {
+          sample.imgList.push(
+            base64File
+          )
+          let imageData = base64File.split('base64,')[1]
+          if (sample.imageData) {
+            sample.imageData = sample.imageData + ',' + imageData
+          } else {
+            sample.imageData = '' + imageData
+          }
+        }, (err) => {
+          console.log(err);
+        });
+      }
+    }, (err) => { });
+    // this.showPicture(sample, this.cameraSetting.albumOption)
   }
 
   showPicture(sample, options) {

+ 30 - 1
src/app/store-qc-detail/store-qc-detail.page.ts

@@ -4,6 +4,8 @@ import { UserData } from '../../providers/user-data';
 import { Camera } from '@ionic-native/camera/ngx';
 import { CameraSetting } from '../../providers/camera-photo'
 import { commonService } from '../../providers/common.service'
+import { ImagePicker, ImagePickerOptions } from '@ionic-native/image-picker/ngx';
+import { Base64 } from '@ionic-native/base64/ngx';
 // import { FullScreenImage } from '@ionic-native/full-screen-image/ngx';
 
 // import { PopoverController } from '@ionic/angular'
@@ -29,6 +31,8 @@ export class StoreQCDetailPage implements OnInit {
   constructor(private storage: Storage,
     public commonService: commonService,
     private cameraSetting: CameraSetting,
+    private base64: Base64,
+    private imagePicker: ImagePicker,
     // private fullScreenImage: FullScreenImage,
     // public popoverCtrl: PopoverController,
     private camera: Camera,
@@ -95,7 +99,32 @@ export class StoreQCDetailPage implements OnInit {
     // }
   }
   choosePicture(qc) {
-    this.showPicture(qc, this.cameraSetting.albumOption)
+    const options: ImagePickerOptions = {  
+      maximumImagesCount: 10,  
+      outputType: 1,  
+      width: 1800,
+      height: 1350,
+      quality: 90  
+    };  
+
+    this.imagePicker.getPictures(options).then((results) => {
+      for (var i = 0; i < results.length; i++) {
+        this.base64.encodeFile(results[i]).then((base64File: string) => {
+          qc.qcimgList.push(
+            base64File
+          )
+          let imageData = base64File.split('base64,')[1]
+          if (qc.imageData) {
+            qc.imageData = qc.imageData + ',' + imageData
+          } else {
+            qc.imageData = '' + imageData
+          }
+        }, (err) => {
+          console.log(err);
+        });
+      }
+    }, (err) => { });
+    // this.showPicture(qc, this.cameraSetting.albumOption)
   }
   takePicture(qc) {
     this.showPicture(qc, this.cameraSetting.takePhotoOption)

+ 30 - 1
src/app/store-qc-scanning/store-qc-scanning.page.ts

@@ -8,6 +8,8 @@ import { CameraSetting } from '../../providers/camera-photo'
 import { commonService } from '../../providers/common.service';
 import { ActivatedRoute } from '@angular/router'
 import { BarcodeScanner } from '@ionic-native/barcode-scanner/ngx';
+import { ImagePicker, ImagePickerOptions } from '@ionic-native/image-picker/ngx';
+import { Base64 } from '@ionic-native/base64/ngx';
 
 
 @Component({
@@ -26,6 +28,8 @@ export class StoreQCScanningPage implements OnInit {
     private activeRoute: ActivatedRoute,
     public commonService: commonService,
     private cameraSetting: CameraSetting,
+    private base64: Base64,
+    private imagePicker: ImagePicker,
     private storage: Storage,
     public userData: UserData,
     private camera: Camera,
@@ -190,7 +194,32 @@ export class StoreQCScanningPage implements OnInit {
   }
 
   choosePicture(qc) {
-    this.showPicture(qc, this.cameraSetting.albumOption)
+    const options: ImagePickerOptions = {  
+      maximumImagesCount: 10,  
+      outputType: 1,  
+      width: 1800,
+      height: 1350,
+      quality: 90  
+    };  
+
+    this.imagePicker.getPictures(options).then((results) => {
+      for (var i = 0; i < results.length; i++) {
+        this.base64.encodeFile(results[i]).then((base64File: string) => {
+          qc.qcimgList.push(
+            base64File
+          )
+          let imageData = base64File.split('base64,')[1]
+          if (qc.imageData) {
+            qc.imageData = qc.imageData + ',' + imageData
+          } else {
+            qc.imageData = '' + imageData
+          }
+        }, (err) => {
+          console.log(err);
+        });
+      }
+    }, (err) => { });
+    // this.showPicture(qc, this.cameraSetting.albumOption)
   }
   takePicture(qc) {
     this.showPicture(qc, this.cameraSetting.takePhotoOption)