<?xml version='1.0' encoding='utf-8'?>
-<widget id="com.dalicitycard.app" version="1.0.5" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
+<widget id="com.dalicitycard.app" version="1.0.6" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name short="大理市民卡">dlapp</name>
<description>
A sample Apache Cordova application that responds to the deviceready event.
},
"cordova-plugin-app-version": {},
"cordova-plugin-wkwebview-engine": {},
- "cordova-plugin-brightness": {}
+ "cordova-plugin-brightness": {},
+ "cordova-plugin-file": {}
},
"platforms": [
"android",
android {
defaultConfig {
- applicationId privateHelpers.extractStringFromManifest("package")
+ applicationId 'com.dalicitycard.app'
if (cdvMinSdkVersion != null) {
minSdkVersion cdvMinSdkVersion
}
- minSdkVersion 24
+ minSdkVersion 23
ndk {
abiFilters "armeabi"
}
- versionCode 10
- versionName '1.3.6'
- versionNameSuffix 'v1'
+ versionCode 11
+ versionName '1.3.7'
targetSdkVersion 26
}
lintOptions {
- abortOnError false;
+ abortOnError false
}
- compileSdkVersion 24
+ compileSdkVersion 26
buildToolsVersion '28.0.3'
// This code exists for Crosswalk and other Native APIs.
// By default, we multiply the existing version code in the
-[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":10,"versionName":"1.3.6v1","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}]
\ No newline at end of file
+[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":11,"versionName":"1.3.7","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}]
\ No newline at end of file
<uses-permission android:name="com.dalicitycard.app.permission.JPUSH_MESSAGE" />
<uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
- <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
+ <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
</manifest>
"clobbers": [
"cordova.plugins.brightness"
]
+ },
+ {
+ "id": "cordova-plugin-file-opener2.FileOpener2",
+ "file": "plugins/cordova-plugin-file-opener2/www/plugins.FileOpener2.js",
+ "pluginId": "cordova-plugin-file-opener2",
+ "clobbers": [
+ "cordova.plugins.fileOpener2"
+ ]
+ },
+ {
+ "id": "cordova-plugin-file-transfer.FileTransferError",
+ "file": "plugins/cordova-plugin-file-transfer/www/FileTransferError.js",
+ "pluginId": "cordova-plugin-file-transfer",
+ "clobbers": [
+ "window.FileTransferError"
+ ]
+ },
+ {
+ "id": "cordova-plugin-file-transfer.FileTransfer",
+ "file": "plugins/cordova-plugin-file-transfer/www/FileTransfer.js",
+ "pluginId": "cordova-plugin-file-transfer",
+ "clobbers": [
+ "window.FileTransfer"
+ ]
+ },
+ {
+ "id": "cordova-plugin-crop.CropPlugin",
+ "file": "plugins/cordova-plugin-crop/www/crop.js",
+ "pluginId": "cordova-plugin-crop",
+ "clobbers": [
+ "plugins.crop"
+ ]
}
];
module.exports.metadata = {
"jpush-phonegap-plugin": "3.7.2",
"cordova-plugin-app-version": "0.1.9",
"cordova-plugin-wkwebview-engine": "1.2.1",
- "cordova-plugin-brightness": "0.1.5"
+ "cordova-plugin-brightness": "0.1.5",
+ "cordova-plugin-file-opener2": "2.2.1",
+ "cordova-plugin-file-transfer": "1.7.1",
+ "cordova-plugin-crop": "0.3.1"
};
});
\ No newline at end of file
} else {
window.location = 'cardinfor.html'
}
+ },
+ logout:function(){
+ window.localStorage.removeItem("token");
+ window.location = "login.html";
}
};
app.initialize();
console.log(e)
});
}
- window,location.href='main.html';
+ window.location.href='main.html';
}
};
app.initialize();
\ No newline at end of file
if (dev) {
SERVER = "http://172.28.43.7:8099/payapi/mobileapi";
}
+function V1Unbindcard(param,callback){
+ ajaxPost("/v1/unbindcard", param, callback)
+}
+
+function V1UnSignbxy(param,callback){
+ ajaxPost("/v1/unsignbxy", param, callback)
+}
function V1Qrcode(callback) {
ajaxPost("/v1/qrcode", {}, callback)
ajaxPost("/i/code", param, callback)
}
-
function IServeTime(callback) {
ajaxPost("/i/time", {}, callback)
}
<header class="aui-bar aui-bar-nav" style="padding-top:25px;font-size: 22px">
我的
</header>
- <section class="aui-content bg-white aui-margin-b-15" style=" margin-top: -2px;">
+ <!-- bg-white -->
+ <section class="aui-content aui-margin-b-15" style=" margin-top: -2px;">
<div class="aui-list aui-media-list aui-list-noborder aui-bg-info user-info">
<div class="aui-list-item aui-list-item-middle top-btn">
<div class="aui-media-list-item-inner ">
</div>
</div>
</div>
- <section class="aui-content aui-grid ">
- <div class="aui-row aui-margin-t-10">
- <div class="aui-col-xs-4 aui-border-r">
- <big class="aui-text-warning" id="user-amount">0.00</big>
- <div class="aui-gird-lable aui-font-size-12">余额</div>
- </div>
- <div class="aui-col-xs-4 aui-border-r">
- <big class="aui-text-success" id="user-point">0</big>
- <div class="aui-gird-lable aui-font-size-12">积分</div>
- </div>
- <div class="aui-col-xs-4 ">
- <big class="aui-text-danger" id="user-coupon">0</big>
- <div class="aui-gird-lable aui-font-size-12">优惠券</div>
- </div>
- </div>
- </section>
-
+ <!--<section class="aui-content aui-grid ">
+ <div class="aui-row aui-margin-t-10">
+ <div class="aui-col-xs-4 aui-border-r">
+ <big class="aui-text-warning" id="user-amount">0.00</big>
+ <div class="aui-gird-lable aui-font-size-12">余额</div>
+ </div>
+ <div class="aui-col-xs-4 aui-border-r">
+ <big class="aui-text-success" id="user-point">0</big>
+ <div class="aui-gird-lable aui-font-size-12">积分</div>
+ </div>
+ <div class="aui-col-xs-4 ">
+ <big class="aui-text-danger" id="user-coupon">0</big>
+ <div class="aui-gird-lable aui-font-size-12">优惠券</div>
+ </div>
+ </div>
+ </section>-->
</section>
<section class="aui-content">
<ul class="aui-list aui-list-in aui-margin-b-15">
</div>
</li>
</ul>
+ <div style="padding: 20px;margin-top: 40px;">
+ <a href="javascript:app.logout();" class="weui-btn weui-btn_warn">退出登录</a>
+ </div>
</section>
</div>
<footer class="aui-bar aui-bar-tab aui-border-t" id="footer">
</head>
<body style="background: #fff" >
<header class="aui-bar aui-bar-nav" style="padding-top:25px;">
- <a class="aui-pull-left" href="app.backTo()">
+ <a class="aui-pull-left" href="javascript:app.backTo()">
<span class="aui-iconfont aui-icon-left"></span>
</a>
<div class="aui-title">付款码</div>
--- /dev/null
+package com;
+
+import android.Manifest;
+import android.content.Intent;
+import android.content.pm.FeatureInfo;
+import android.content.pm.PackageManager;
+import android.graphics.Color;
+import android.hardware.Camera;
+import android.hardware.camera2.CameraAccessException;
+import android.net.Uri;
+import android.provider.Settings;
+import android.support.v4.app.ActivityCompat;
+import android.view.ViewGroup;
+import android.widget.FrameLayout;
+
+import com.google.zxing.BarcodeFormat;
+import com.journeyapps.barcodescanner.BarcodeView;
+import com.journeyapps.barcodescanner.camera.CameraSettings;
+import com.visionsmarts.VSBarcodeReader;
+import com.visionsmarts.pic2shop.view.ScannerLiveView;
+
+import org.apache.cordova.CallbackContext;
+import org.apache.cordova.CordovaPlugin;
+import org.apache.cordova.PermissionHelper;
+import org.apache.cordova.PluginResult;
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+
+
+@SuppressWarnings("deprecation")
+public class QRScanner_Back extends CordovaPlugin {
+ private ScannerLiveView scannerLiveView;
+ private CallbackContext callbackContext;
+ private boolean cameraClosing;
+ private static Boolean flashAvailable;
+ private boolean lightOn = false;
+ private boolean showing = false;
+ private boolean prepared = false;
+ private int currentCameraId = Camera.CameraInfo.CAMERA_FACING_BACK;
+ private String[] permissions = {Manifest.permission.CAMERA};
+ //Preview started or paused
+ private boolean previewing = false;
+ private BarcodeView mBarcodeView;
+ private boolean switchFlashOn = false;
+ private boolean switchFlashOff = false;
+ private boolean cameraPreviewing;
+ private boolean scanning = false;
+ private CallbackContext nextScanCallback;
+ private boolean shouldScanAgain;
+ private boolean denied;
+ private boolean authorized;
+ private boolean restricted;
+ private boolean oneTime = true;
+ private boolean keepDenied = false;
+ private boolean appPausedWithActivePreview = false;
+ private ScannerLiveView.Listener listener = new ScannerLiveView.Listener() {
+ @Override
+ public void onCodeScanned(String str, String data) {
+ if (nextScanCallback == null) {
+ return;
+ }
+
+ if(data != null) {
+ scanning = false;
+ nextScanCallback.success(data);
+ nextScanCallback = null;
+ }
+ else {
+ scan(nextScanCallback);
+ }
+ }
+
+ @Override
+ public void onCameraIssue() {
+
+ }
+ };
+
+ public void onCodeScanned(String type, String data) {
+ //PluginResult result = new PluginResult(PluginResult.Status.OK, data);
+ //callbackContext.sendPluginResult(result);
+ if (this.nextScanCallback == null) {
+ return;
+ }
+
+ if(data != null) {
+ scanning = false;
+ this.nextScanCallback.success(data);
+ this.nextScanCallback = null;
+ }
+ else {
+ scan(this.nextScanCallback);
+ }
+ }
+ public void onCameraIssue() {
+
+ }
+
+ static class QRScannerError {
+ private static final int UNEXPECTED_ERROR = 0,
+ CAMERA_ACCESS_DENIED = 1,
+ CAMERA_ACCESS_RESTRICTED = 2,
+ BACK_CAMERA_UNAVAILABLE = 3,
+ FRONT_CAMERA_UNAVAILABLE = 4,
+ CAMERA_UNAVAILABLE = 5,
+ SCAN_CANCELED = 6,
+ LIGHT_UNAVAILABLE = 7,
+ OPEN_SETTINGS_UNAVAILABLE = 8;
+ }
+
+ @Override
+ public boolean execute(final String action, final JSONArray args, final CallbackContext callbackContext) throws JSONException {
+ this.callbackContext = callbackContext;
+ try {
+ if (action.equals("show")) {
+ cordova.getThreadPool().execute(new Runnable() {
+ public void run() {
+ show(callbackContext);
+ }
+ });
+ return true;
+ }
+ else if(action.equals("scan")) {
+ cordova.getThreadPool().execute(new Runnable() {
+ public void run() {
+ scan(callbackContext);
+ }
+ });
+ return true;
+ }
+ else if(action.equals("cancelScan")) {
+ cordova.getThreadPool().execute(new Runnable() {
+ public void run() {
+ cancelScan(callbackContext);
+ }
+ });
+ return true;
+ }
+ else if(action.equals("openSettings")) {
+ cordova.getThreadPool().execute(new Runnable() {
+ public void run() {
+ openSettings(callbackContext);
+ }
+ });
+ return true;
+ }
+ else if(action.equals("pausePreview")) {
+ cordova.getThreadPool().execute(new Runnable() {
+ public void run() {
+ pausePreview(callbackContext);
+ }
+ });
+ return true;
+ }
+ else if(action.equals("useCamera")) {
+ cordova.getThreadPool().execute(new Runnable() {
+ public void run() {
+ switchCamera(callbackContext, args);
+ }
+ });
+ return true;
+ }
+ else if(action.equals("resumePreview")) {
+ cordova.getThreadPool().execute(new Runnable() {
+ public void run() {
+ resumePreview(callbackContext);
+ }
+ });
+ return true;
+ }
+ else if(action.equals("hide")) {
+ cordova.getThreadPool().execute(new Runnable() {
+ public void run() {
+ hide(callbackContext);
+ }
+ });
+ return true;
+ }
+ else if (action.equals("enableLight")) {
+ cordova.getThreadPool().execute(new Runnable() {
+ public void run() {
+ while (cameraClosing) {
+ try {
+ Thread.sleep(10);
+ } catch (InterruptedException ignore) {
+ }
+ }
+ switchFlashOn = true;
+ if (hasFlash()) {
+ if (!hasPermission()) {
+ requestPermission(33);
+ } else
+ enableLight(callbackContext);
+ } else {
+ callbackContext.error(QRScannerError.LIGHT_UNAVAILABLE);
+ }
+ }
+ });
+ return true;
+ }
+ else if (action.equals("disableLight")) {
+ cordova.getThreadPool().execute(new Runnable() {
+ public void run() {
+ switchFlashOff = true;
+ if (hasFlash()) {
+ if (!hasPermission()) {
+ requestPermission(33);
+ } else
+ disableLight(callbackContext);
+ } else {
+ callbackContext.error(QRScannerError.LIGHT_UNAVAILABLE);
+ }
+ }
+ });
+ return true;
+ }
+ else if (action.equals("prepare")) {
+ cordova.getThreadPool().execute(new Runnable() {
+ public void run() {
+ cordova.getActivity().runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ currentCameraId = args.getInt(0);
+ } catch (JSONException e) {
+ }
+ prepare(callbackContext);
+ }
+ });
+ }
+ });
+ return true;
+ }
+ else if (action.equals("destroy")) {
+ cordova.getThreadPool().execute(new Runnable() {
+ public void run() {
+ destroy(callbackContext);
+ }
+ });
+ return true;
+ }
+ else if (action.equals("getStatus")) {
+ cordova.getThreadPool().execute(new Runnable() {
+ public void run() {
+ getStatus(callbackContext);
+ }
+ });
+ return true;
+ }
+ else {
+ return false;
+ }
+ } catch (Exception e) {
+ callbackContext.error(QRScannerError.UNEXPECTED_ERROR);
+ return false;
+ }
+ }
+
+ @Override
+ public void onPause(boolean multitasking) {
+ if (previewing) {
+ this.appPausedWithActivePreview = true;
+ this.pausePreview(null);
+ }
+ }
+
+ @Override
+ public void onResume(boolean multitasking) {
+ if (this.appPausedWithActivePreview) {
+ this.appPausedWithActivePreview = false;
+ this.resumePreview(null);
+ }
+ }
+
+ private boolean hasFlash() {
+ if (flashAvailable == null) {
+ flashAvailable = false;
+ final PackageManager packageManager = this.cordova.getActivity().getPackageManager();
+ for (final FeatureInfo feature : packageManager.getSystemAvailableFeatures()) {
+ if (PackageManager.FEATURE_CAMERA_FLASH.equalsIgnoreCase(feature.name)) {
+ flashAvailable = true;
+ break;
+ }
+ }
+ }
+ return flashAvailable;
+ }
+
+ private void switchFlash(boolean toggleLight, CallbackContext callbackContext) {
+ try {
+ if (hasFlash()) {
+ doswitchFlash(toggleLight, callbackContext);
+ } else {
+ callbackContext.error(QRScannerError.LIGHT_UNAVAILABLE);
+ }
+ } catch (Exception e) {
+ lightOn = false;
+ callbackContext.error(QRScannerError.LIGHT_UNAVAILABLE);
+ }
+ }
+
+ private String boolToNumberString(Boolean bool) {
+ if(bool)
+ return "1";
+ else
+ return "0";
+ }
+
+ private void doswitchFlash(final boolean toggleLight, final CallbackContext callbackContext) throws IOException, CameraAccessException { //No flash for front facing cameras
+ if (getCurrentCameraId() == Camera.CameraInfo.CAMERA_FACING_FRONT) {
+ callbackContext.error(QRScannerError.LIGHT_UNAVAILABLE);
+ return;
+ }
+ if (!prepared) {
+ if (toggleLight)
+ lightOn = true;
+ else
+ lightOn = false;
+ prepare(callbackContext);
+ }
+ cordova.getActivity().runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ if (mBarcodeView != null) {
+ mBarcodeView.setTorch(toggleLight);
+ if (toggleLight)
+ lightOn = true;
+ else
+ lightOn = false;
+ }
+ if(scannerLiveView!=null){
+ scannerLiveView.setTorch(toggleLight);
+ if (toggleLight)
+ lightOn = true;
+ else
+ lightOn = false;
+ }
+ getStatus(callbackContext);
+ }
+ });
+ }
+
+ public int getCurrentCameraId() {
+ return this.currentCameraId;
+ }
+
+ private boolean canChangeCamera() {
+ int numCameras= Camera.getNumberOfCameras();
+ for(int i=0;i<numCameras;i++){
+ Camera.CameraInfo info = new Camera.CameraInfo();
+ Camera.getCameraInfo(i, info);
+ if(info.CAMERA_FACING_FRONT == info.facing){
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public void switchCamera(CallbackContext callbackContext, JSONArray args) {
+ int cameraId = 0;
+
+ try {
+ cameraId = args.getInt(0);
+ } catch (JSONException d) {
+ callbackContext.error(QRScannerError.UNEXPECTED_ERROR);
+ }
+ currentCameraId = cameraId;
+ if(scanning) {
+ scanning = false;
+ prepared = false;
+ if(cameraPreviewing) {
+ this.cordova.getActivity().runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ ((ViewGroup) mBarcodeView.getParent()).removeView(mBarcodeView);
+ cameraPreviewing = false;
+ }
+ });
+ }
+ closeCamera();
+ prepare(callbackContext);
+ scan(this.nextScanCallback);
+ }
+ else
+ prepare(callbackContext);
+ }
+
+ public void onRequestPermissionResult(int requestCode, String[] permissions,
+ int[] grantResults) throws JSONException {
+ oneTime = false;
+ if (requestCode == 33) {
+ // for each permission check if the user granted/denied them
+ // you may want to group the rationale in a single dialog,
+ // this is just an example
+ for (int i = 0; i < permissions.length; i++) {
+ String permission = permissions[i];
+ if (grantResults[i] == PackageManager.PERMISSION_DENIED) {
+ boolean showRationale = ActivityCompat.shouldShowRequestPermissionRationale(cordova.getActivity(), permission);
+ if (! showRationale) {
+ // user denied flagging NEVER ASK AGAIN
+ denied = true;
+ authorized = false;
+ callbackContext.error(QRScannerError.CAMERA_ACCESS_DENIED);
+ return;
+ } else {
+ authorized = false;
+ denied = false;
+ callbackContext.error(QRScannerError.CAMERA_ACCESS_DENIED);
+ return;
+ }
+ } else if (grantResults[i] == PackageManager.PERMISSION_GRANTED){
+ authorized = true;
+ denied = false;
+ switch (requestCode) {
+ case 33:
+ if(switchFlashOn && !scanning && !switchFlashOff)
+ switchFlash(true, callbackContext);
+ else if(switchFlashOff && !scanning)
+ switchFlash(false, callbackContext);
+ else {
+ setupCamera(callbackContext);
+ if(!scanning)
+ getStatus(callbackContext);
+ }
+ break;
+ }
+ }
+ else {
+ authorized = false;
+ denied = false;
+ restricted = false;
+ }
+ }
+ }
+ }
+
+ public boolean hasPermission() {
+ for(String p : permissions)
+ {
+ if(!PermissionHelper.hasPermission(this, p))
+ {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ private void requestPermission(int requestCode) {
+ PermissionHelper.requestPermissions(this, requestCode, permissions);
+ }
+
+ private void closeCamera() {
+ cameraClosing = true;
+ cordova.getActivity().runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ if (mBarcodeView != null) {
+ mBarcodeView.pause();
+ }
+
+ cameraClosing = false;
+ }
+ });
+ }
+
+ private void makeOpaque() {
+ this.cordova.getActivity().runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ webView.getView().setBackgroundColor(Color.TRANSPARENT);
+ }
+ });
+ showing = false;
+ }
+
+ private boolean hasCamera() {
+ if (this.cordova.getActivity().getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)){
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ private boolean hasFrontCamera() {
+ if (this.cordova.getActivity().getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FRONT)){
+ return true;
+ } else {
+ return false;
+ }
+ }
+ private void setupCamera(CallbackContext callbackContext) {
+ cordova.getActivity().runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ // Create our Preview view and set it as the content of our activity.
+ //mBarcodeView = new BarcodeView(cordova.getActivity());
+ scannerLiveView = new ScannerLiveView(cordova.getActivity(),listener);
+
+ VSBarcodeReader.VSinit();
+ VSBarcodeReader.setBlurryAcceptanceThresholdWithAF(0.0d);
+ //Configure the decoder
+ ArrayList<BarcodeFormat> formatList = new ArrayList<BarcodeFormat>();
+ formatList.add(BarcodeFormat.QR_CODE);
+ //mBarcodeView.setDecoderFactory(new DefaultDecoderFactory(formatList, null, null));
+
+ //Configure the camera (front/back)
+ CameraSettings settings = new CameraSettings();
+ settings.setRequestedCameraId(getCurrentCameraId());
+ //mBarcodeView.setCameraSettings(settings);
+
+ FrameLayout.LayoutParams cameraPreviewParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT);
+ //((ViewGroup) webView.getView().getParent()).addView(mBarcodeView, cameraPreviewParams);
+ ((ViewGroup) webView.getView().getParent()).addView(scannerLiveView, cameraPreviewParams);
+ cameraPreviewing = true;
+ webView.getView().bringToFront();
+
+ //mBarcodeView.resume();
+ //scannerLiveView.onResume();
+ }
+ });
+ prepared = true;
+ previewing = true;
+ if(shouldScanAgain)
+ scan(callbackContext);
+
+ }
+
+ /*@Override
+ public void barcodeResult(BarcodeResult barcodeResult) {
+ if (this.nextScanCallback == null) {
+ return;
+ }
+
+ if(barcodeResult.getText() != null) {
+ scanning = false;
+ this.nextScanCallback.success(barcodeResult.getText());
+ this.nextScanCallback = null;
+ }
+ else {
+ scan(this.nextScanCallback);
+ }
+ }
+
+ @Override
+ public void possibleResultPoints(List<ResultPoint> list) {
+ }*/
+
+ // ---- BEGIN EXTERNAL API ----
+ private void prepare(final CallbackContext callbackContext) {
+ if(!prepared) {
+ if(currentCameraId == Camera.CameraInfo.CAMERA_FACING_BACK) {
+ if (hasCamera()) {
+ if (!hasPermission()) {
+ requestPermission(33);
+ }
+ else {
+ setupCamera(callbackContext);
+ if (!scanning)
+ getStatus(callbackContext);
+ }
+ }
+ else {
+ callbackContext.error(QRScannerError.BACK_CAMERA_UNAVAILABLE);
+ }
+ }
+ else if(currentCameraId == Camera.CameraInfo.CAMERA_FACING_FRONT) {
+ if (hasFrontCamera()) {
+ if (!hasPermission()) {
+ requestPermission(33);
+ }
+ else {
+ setupCamera(callbackContext);
+ if (!scanning)
+ getStatus(callbackContext);
+ }
+ }
+ else {
+ callbackContext.error(QRScannerError.FRONT_CAMERA_UNAVAILABLE);
+ }
+ }
+ else {
+ callbackContext.error(QRScannerError.CAMERA_UNAVAILABLE);
+ }
+ }
+ else {
+ prepared = false;
+ this.cordova.getActivity().runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ mBarcodeView.pause();
+ }
+ });
+ if(cameraPreviewing) {
+ this.cordova.getActivity().runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ ((ViewGroup) mBarcodeView.getParent()).removeView(mBarcodeView);
+ cameraPreviewing = false;
+ }
+ });
+
+ previewing = true;
+ lightOn = false;
+ }
+ setupCamera(callbackContext);
+ getStatus(callbackContext);
+ }
+ }
+
+ private void scan(final CallbackContext callbackContext) {
+ scanning = true;
+ if (!prepared) {
+ shouldScanAgain = true;
+ if (hasCamera()) {
+ if (!hasPermission()) {
+ requestPermission(33);
+ } else {
+ setupCamera(callbackContext);
+ }
+ }
+ } else {
+ if(!previewing) {
+ this.cordova.getActivity().runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ if(mBarcodeView != null) {
+ mBarcodeView.resume();
+ previewing = true;
+ if(switchFlashOn)
+ lightOn = true;
+ }
+ }
+ });
+ }
+ shouldScanAgain = false;
+ this.nextScanCallback = callbackContext;
+ /*final BarcodeCallback b = this;
+ this.cordova.getActivity().runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ if (mBarcodeView != null) {
+ mBarcodeView.decodeSingle(b);
+ }
+ }
+ });*/
+
+ if(scannerLiveView!=null){
+ scannerLiveView.onResume();
+ }
+ }
+ }
+
+ private void cancelScan(final CallbackContext callbackContext) {
+ this.cordova.getActivity().runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ scanning = false;
+ if (mBarcodeView != null) {
+ mBarcodeView.stopDecoding();
+ }
+ }
+ });
+ if(this.nextScanCallback != null)
+ this.nextScanCallback.error(QRScannerError.SCAN_CANCELED);
+ this.nextScanCallback = null;
+ }
+
+ private void show(final CallbackContext callbackContext) {
+ this.cordova.getActivity().runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ webView.getView().setBackgroundColor(Color.argb(1, 0, 0, 0));
+ if(scannerLiveView!=null){
+ scannerLiveView.startCamera();
+ }
+ showing = true;
+ getStatus(callbackContext);
+ }
+ });
+ }
+
+ private void hide(final CallbackContext callbackContext) {
+ makeOpaque();
+ getStatus(callbackContext);
+ }
+
+ private void pausePreview(final CallbackContext callbackContext) {
+ this.cordova.getActivity().runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ if(mBarcodeView != null) {
+ mBarcodeView.pause();
+ previewing = false;
+ if(lightOn)
+ lightOn = false;
+ }
+
+ if (callbackContext != null)
+ getStatus(callbackContext);
+ }
+ });
+
+ }
+
+ private void resumePreview(final CallbackContext callbackContext) {
+ this.cordova.getActivity().runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ if(mBarcodeView != null) {
+ mBarcodeView.resume();
+ previewing = true;
+ if(switchFlashOn)
+ lightOn = true;
+ }
+
+ if (callbackContext != null)
+ getStatus(callbackContext);
+ }
+ });
+ }
+
+ private void enableLight(CallbackContext callbackContext) {
+ lightOn = true;
+ if(hasPermission())
+ switchFlash(true, callbackContext);
+ else callbackContext.error(QRScannerError.CAMERA_ACCESS_DENIED);
+ }
+
+ private void disableLight(CallbackContext callbackContext) {
+ lightOn = false;
+ switchFlashOn = false;
+ if(hasPermission())
+ switchFlash(false, callbackContext);
+ else callbackContext.error(QRScannerError.CAMERA_ACCESS_DENIED);
+ }
+
+ private void openSettings(CallbackContext callbackContext) {
+ oneTime = true;
+ if(denied)
+ keepDenied = true;
+ try {
+ denied = false;
+ authorized = false;
+ boolean shouldPrepare = prepared;
+ boolean shouldFlash = lightOn;
+ boolean shouldShow = showing;
+ if(prepared)
+ destroy(callbackContext);
+ lightOn = false;
+ Intent intent = new Intent();
+ intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ Uri uri = Uri.fromParts("package", this.cordova.getActivity().getPackageName(), null);
+ intent.setData(uri);
+ this.cordova.getActivity().getApplicationContext().startActivity(intent);
+ getStatus(callbackContext);
+ if (shouldPrepare)
+ prepare(callbackContext);
+ if (shouldFlash)
+ enableLight(callbackContext);
+ if (shouldShow)
+ show(callbackContext);
+ } catch (Exception e) {
+ callbackContext.error(QRScannerError.OPEN_SETTINGS_UNAVAILABLE);
+ }
+
+ }
+
+ private void getStatus(CallbackContext callbackContext) {
+
+ if(oneTime) {
+ boolean authorizationStatus = hasPermission();
+
+ authorized = false;
+ if (authorizationStatus)
+ authorized = true;
+
+ if(keepDenied && !authorized)
+ denied = true;
+ else
+ denied = false;
+
+ //No applicable API
+ restricted = false;
+ }
+ boolean canOpenSettings = true;
+
+ boolean canEnableLight = hasFlash();
+
+ if(currentCameraId == Camera.CameraInfo.CAMERA_FACING_FRONT)
+ canEnableLight = false;
+
+ HashMap status = new HashMap();
+ status.put("authorized",boolToNumberString(authorized));
+ status.put("denied",boolToNumberString(denied));
+ status.put("restricted",boolToNumberString(restricted));
+ status.put("prepared",boolToNumberString(prepared));
+ status.put("scanning",boolToNumberString(scanning));
+ status.put("previewing",boolToNumberString(previewing));
+ status.put("showing",boolToNumberString(showing));
+ status.put("lightEnabled",boolToNumberString(lightOn));
+ status.put("canOpenSettings",boolToNumberString(canOpenSettings));
+ status.put("canEnableLight",boolToNumberString(canEnableLight));
+ status.put("canChangeCamera",boolToNumberString(canChangeCamera()));
+ status.put("currentCamera",Integer.toString(getCurrentCameraId()));
+
+ JSONObject obj = new JSONObject(status);
+ PluginResult result = new PluginResult(PluginResult.Status.OK, obj);
+ callbackContext.sendPluginResult(result);
+ }
+
+ private void destroy(CallbackContext callbackContext) {
+ prepared = false;
+ makeOpaque();
+ previewing = false;
+ if(scanning) {
+ this.cordova.getActivity().runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ scanning = false;
+ if (mBarcodeView != null) {
+ mBarcodeView.stopDecoding();
+ }
+ }
+ });
+ this.nextScanCallback = null;
+ }
+
+ if(cameraPreviewing) {
+ this.cordova.getActivity().runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ if(mBarcodeView!=null) {
+ ((ViewGroup) mBarcodeView.getParent()).removeView(mBarcodeView);
+ cameraPreviewing = false;
+ }
+ }
+ });
+ }
+ if(currentCameraId != Camera.CameraInfo.CAMERA_FACING_FRONT) {
+ if (lightOn)
+ switchFlash(false, callbackContext);
+ }
+ closeCamera();
+ currentCameraId = 0;
+ if(scannerLiveView!=null){
+ scannerLiveView.onPause();
+ }
+ getStatus(callbackContext);
+ }
+}
"clobbers": [
"cordova.plugins.brightness"
]
+ },
+ {
+ "id": "cordova-plugin-file-opener2.FileOpener2",
+ "file": "plugins/cordova-plugin-file-opener2/www/plugins.FileOpener2.js",
+ "pluginId": "cordova-plugin-file-opener2",
+ "clobbers": [
+ "cordova.plugins.fileOpener2"
+ ]
+ },
+ {
+ "id": "cordova-plugin-file-transfer.FileTransferError",
+ "file": "plugins/cordova-plugin-file-transfer/www/FileTransferError.js",
+ "pluginId": "cordova-plugin-file-transfer",
+ "clobbers": [
+ "window.FileTransferError"
+ ]
+ },
+ {
+ "id": "cordova-plugin-file-transfer.FileTransfer",
+ "file": "plugins/cordova-plugin-file-transfer/www/FileTransfer.js",
+ "pluginId": "cordova-plugin-file-transfer",
+ "clobbers": [
+ "window.FileTransfer"
+ ]
+ },
+ {
+ "id": "cordova-plugin-crop.CropPlugin",
+ "file": "plugins/cordova-plugin-crop/www/crop.js",
+ "pluginId": "cordova-plugin-crop",
+ "clobbers": [
+ "plugins.crop"
+ ]
}
];
module.exports.metadata = {
"jpush-phonegap-plugin": "3.7.2",
"cordova-plugin-app-version": "0.1.9",
"cordova-plugin-wkwebview-engine": "1.2.1",
- "cordova-plugin-brightness": "0.1.5"
+ "cordova-plugin-brightness": "0.1.5",
+ "cordova-plugin-file-opener2": "2.2.1",
+ "cordova-plugin-file-transfer": "1.7.1",
+ "cordova-plugin-crop": "0.3.1"
};
});
\ No newline at end of file
--- /dev/null
+cordova.define("cordova-plugin-crop.CropPlugin", function(require, exports, module) {
+/* global cordova */
+var crop = module.exports = function cropImage (success, fail, image, options) {
+ options = options || {}
+ options.quality = options.quality || 100
+ return cordova.exec(success, fail, 'CropPlugin', 'cropImage', [image, options])
+}
+
+module.exports.promise = function cropAsync (image, options) {
+ return new Promise(function (resolve, reject) {
+ crop(resolve, reject, image, options)
+ })
+}
+
+});
--- /dev/null
+cordova.define("cordova-plugin-file-opener2.FileOpener2", function(require, exports, module) {
+/*jslint browser: true, devel: true, node: true, sloppy: true, plusplus: true*/
+/*global require, cordova */
+/*
+The MIT License (MIT)
+
+Copyright (c) 2013 pwlin - pwlin05@gmail.com
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+var exec = require('cordova/exec');
+
+function FileOpener2() {}
+
+FileOpener2.prototype.open = function (fileName, contentType, callbackContext) {
+ contentType = contentType || '';
+ callbackContext = callbackContext || {};
+ exec(callbackContext.success || null, callbackContext.error || null, 'FileOpener2', 'open', [fileName, contentType]);
+};
+
+FileOpener2.prototype.showOpenWithDialog = function (fileName, contentType, callbackContext) {
+ contentType = contentType || '';
+ callbackContext = callbackContext || {};
+ exec(callbackContext.success || null, callbackContext.error || null, 'FileOpener2', 'open', [fileName, contentType, false]);
+};
+
+FileOpener2.prototype.uninstall = function (packageId, callbackContext) {
+ callbackContext = callbackContext || {};
+ exec(callbackContext.success || null, callbackContext.error || null, 'FileOpener2', 'uninstall', [packageId]);
+};
+
+FileOpener2.prototype.appIsInstalled = function (packageId, callbackContext) {
+ callbackContext = callbackContext || {};
+ exec(callbackContext.success || null, callbackContext.error || null, 'FileOpener2', 'appIsInstalled', [packageId]);
+};
+
+module.exports = new FileOpener2();
+
+});
--- /dev/null
+cordova.define("cordova-plugin-file-transfer.FileTransfer", function(require, exports, module) {
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+
+/* global cordova, FileSystem */
+
+var argscheck = require('cordova/argscheck'),
+ exec = require('cordova/exec'),
+ FileTransferError = require('./FileTransferError'),
+ ProgressEvent = require('cordova-plugin-file.ProgressEvent');
+
+function newProgressEvent(result) {
+ var pe = new ProgressEvent();
+ pe.lengthComputable = result.lengthComputable;
+ pe.loaded = result.loaded;
+ pe.total = result.total;
+ return pe;
+}
+
+function getUrlCredentials(urlString) {
+ var credentialsPattern = /^https?\:\/\/(?:(?:(([^:@\/]*)(?::([^@\/]*))?)?@)?([^:\/?#]*)(?::(\d*))?).*$/,
+ credentials = credentialsPattern.exec(urlString);
+
+ return credentials && credentials[1];
+}
+
+function getBasicAuthHeader(urlString) {
+ var header = null;
+
+
+ // This is changed due to MS Windows doesn't support credentials in http uris
+ // so we detect them by regexp and strip off from result url
+ // Proof: http://social.msdn.microsoft.com/Forums/windowsapps/en-US/a327cf3c-f033-4a54-8b7f-03c56ba3203f/windows-foundation-uri-security-problem
+
+ if (window.btoa) {
+ var credentials = getUrlCredentials(urlString);
+ if (credentials) {
+ var authHeader = "Authorization";
+ var authHeaderValue = "Basic " + window.btoa(credentials);
+
+ header = {
+ name : authHeader,
+ value : authHeaderValue
+ };
+ }
+ }
+
+ return header;
+}
+
+function convertHeadersToArray(headers) {
+ var result = [];
+ for (var header in headers) {
+ if (headers.hasOwnProperty(header)) {
+ var headerValue = headers[header];
+ result.push({
+ name: header,
+ value: headerValue.toString()
+ });
+ }
+ }
+ return result;
+}
+
+var idCounter = 0;
+
+/**
+ * FileTransfer uploads a file to a remote server.
+ * @constructor
+ */
+var FileTransfer = function() {
+ this._id = ++idCounter;
+ this.onprogress = null; // optional callback
+};
+
+/**
+* Given an absolute file path, uploads a file on the device to a remote server
+* using a multipart HTTP request.
+* @param filePath {String} Full path of the file on the device
+* @param server {String} URL of the server to receive the file
+* @param successCallback (Function} Callback to be invoked when upload has completed
+* @param errorCallback {Function} Callback to be invoked upon error
+* @param options {FileUploadOptions} Optional parameters such as file name and mimetype
+* @param trustAllHosts {Boolean} Optional trust all hosts (e.g. for self-signed certs), defaults to false
+*/
+FileTransfer.prototype.upload = function(filePath, server, successCallback, errorCallback, options, trustAllHosts) {
+ argscheck.checkArgs('ssFFO*', 'FileTransfer.upload', arguments);
+ // check for options
+ var fileKey = null;
+ var fileName = null;
+ var mimeType = null;
+ var params = null;
+ var chunkedMode = true;
+ var headers = null;
+ var httpMethod = null;
+ var basicAuthHeader = getBasicAuthHeader(server);
+ if (basicAuthHeader) {
+ server = server.replace(getUrlCredentials(server) + '@', '');
+
+ options = options || {};
+ options.headers = options.headers || {};
+ options.headers[basicAuthHeader.name] = basicAuthHeader.value;
+ }
+
+ if (options) {
+ fileKey = options.fileKey;
+ fileName = options.fileName;
+ mimeType = options.mimeType;
+ headers = options.headers;
+ httpMethod = options.httpMethod || "POST";
+ if (httpMethod.toUpperCase() == "PUT"){
+ httpMethod = "PUT";
+ } else {
+ httpMethod = "POST";
+ }
+ if (options.chunkedMode !== null || typeof options.chunkedMode != "undefined") {
+ chunkedMode = options.chunkedMode;
+ }
+ if (options.params) {
+ params = options.params;
+ }
+ else {
+ params = {};
+ }
+ }
+
+ if (cordova.platformId === "windowsphone") {
+ headers = headers && convertHeadersToArray(headers);
+ params = params && convertHeadersToArray(params);
+ }
+
+ var fail = errorCallback && function(e) {
+ var error = new FileTransferError(e.code, e.source, e.target, e.http_status, e.body, e.exception);
+ errorCallback(error);
+ };
+
+ var self = this;
+ var win = function(result) {
+ if (typeof result.lengthComputable != "undefined") {
+ if (self.onprogress) {
+ self.onprogress(newProgressEvent(result));
+ }
+ } else {
+ if (successCallback) {
+ successCallback(result);
+ }
+ }
+ };
+ exec(win, fail, 'FileTransfer', 'upload', [filePath, server, fileKey, fileName, mimeType, params, trustAllHosts, chunkedMode, headers, this._id, httpMethod]);
+};
+
+/**
+ * Downloads a file form a given URL and saves it to the specified directory.
+ * @param source {String} URL of the server to receive the file
+ * @param target {String} Full path of the file on the device
+ * @param successCallback (Function} Callback to be invoked when upload has completed
+ * @param errorCallback {Function} Callback to be invoked upon error
+ * @param trustAllHosts {Boolean} Optional trust all hosts (e.g. for self-signed certs), defaults to false
+ * @param options {FileDownloadOptions} Optional parameters such as headers
+ */
+FileTransfer.prototype.download = function(source, target, successCallback, errorCallback, trustAllHosts, options) {
+ argscheck.checkArgs('ssFF*', 'FileTransfer.download', arguments);
+ var self = this;
+
+ var basicAuthHeader = getBasicAuthHeader(source);
+ if (basicAuthHeader) {
+ source = source.replace(getUrlCredentials(source) + '@', '');
+
+ options = options || {};
+ options.headers = options.headers || {};
+ options.headers[basicAuthHeader.name] = basicAuthHeader.value;
+ }
+
+ var headers = null;
+ if (options) {
+ headers = options.headers || null;
+ }
+
+ if (cordova.platformId === "windowsphone" && headers) {
+ headers = convertHeadersToArray(headers);
+ }
+
+ var win = function(result) {
+ if (typeof result.lengthComputable != "undefined") {
+ if (self.onprogress) {
+ return self.onprogress(newProgressEvent(result));
+ }
+ } else if (successCallback) {
+ var entry = null;
+ if (result.isDirectory) {
+ entry = new (require('cordova-plugin-file.DirectoryEntry'))();
+ }
+ else if (result.isFile) {
+ entry = new (require('cordova-plugin-file.FileEntry'))();
+ }
+ entry.isDirectory = result.isDirectory;
+ entry.isFile = result.isFile;
+ entry.name = result.name;
+ entry.fullPath = result.fullPath;
+ entry.filesystem = new FileSystem(result.filesystemName || (result.filesystem == window.PERSISTENT ? 'persistent' : 'temporary'));
+ entry.nativeURL = result.nativeURL;
+ successCallback(entry);
+ }
+ };
+
+ var fail = errorCallback && function(e) {
+ var error = new FileTransferError(e.code, e.source, e.target, e.http_status, e.body, e.exception);
+ errorCallback(error);
+ };
+
+ exec(win, fail, 'FileTransfer', 'download', [source, target, trustAllHosts, this._id, headers]);
+};
+
+/**
+ * Aborts the ongoing file transfer on this object. The original error
+ * callback for the file transfer will be called if necessary.
+ */
+FileTransfer.prototype.abort = function() {
+ exec(null, null, 'FileTransfer', 'abort', [this._id]);
+};
+
+module.exports = FileTransfer;
+
+});
--- /dev/null
+cordova.define("cordova-plugin-file-transfer.FileTransferError", function(require, exports, module) {
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+
+/**
+ * FileTransferError
+ * @constructor
+ */
+var FileTransferError = function(code, source, target, status, body, exception) {
+ this.code = code || null;
+ this.source = source || null;
+ this.target = target || null;
+ this.http_status = status || null;
+ this.body = body || null;
+ this.exception = exception || null;
+};
+
+FileTransferError.FILE_NOT_FOUND_ERR = 1;
+FileTransferError.INVALID_URL_ERR = 2;
+FileTransferError.CONNECTION_ERR = 3;
+FileTransferError.ABORT_ERR = 4;
+FileTransferError.NOT_MODIFIED_ERR = 5;
+
+module.exports = FileTransferError;
+
+});
--- /dev/null
+cordova.define("cordova-plugin-crop.CropPlugin", function(require, exports, module) { /* global cordova */
+var crop = module.exports = function cropImage (success, fail, image, options) {
+ options = options || {}
+ options.quality = options.quality || 100
+ return cordova.exec(success, fail, 'CropPlugin', 'cropImage', [image, options])
+}
+
+module.exports.promise = function cropAsync (image, options) {
+ return new Promise(function (resolve, reject) {
+ crop(resolve, reject, image, options)
+ })
+}
+
+});
--- /dev/null
+cordova.define("cordova-plugin-file-opener2.FileOpener2", function(require, exports, module) { /*jslint browser: true, devel: true, node: true, sloppy: true, plusplus: true*/
+/*global require, cordova */
+/*
+The MIT License (MIT)
+
+Copyright (c) 2013 pwlin - pwlin05@gmail.com
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+var exec = require('cordova/exec');
+
+function FileOpener2() {}
+
+FileOpener2.prototype.open = function (fileName, contentType, callbackContext) {
+ contentType = contentType || '';
+ callbackContext = callbackContext || {};
+ exec(callbackContext.success || null, callbackContext.error || null, 'FileOpener2', 'open', [fileName, contentType]);
+};
+
+FileOpener2.prototype.showOpenWithDialog = function (fileName, contentType, callbackContext) {
+ contentType = contentType || '';
+ callbackContext = callbackContext || {};
+ exec(callbackContext.success || null, callbackContext.error || null, 'FileOpener2', 'open', [fileName, contentType, false]);
+};
+
+FileOpener2.prototype.uninstall = function (packageId, callbackContext) {
+ callbackContext = callbackContext || {};
+ exec(callbackContext.success || null, callbackContext.error || null, 'FileOpener2', 'uninstall', [packageId]);
+};
+
+FileOpener2.prototype.appIsInstalled = function (packageId, callbackContext) {
+ callbackContext = callbackContext || {};
+ exec(callbackContext.success || null, callbackContext.error || null, 'FileOpener2', 'appIsInstalled', [packageId]);
+};
+
+module.exports = new FileOpener2();
+
+});
--- /dev/null
+cordova.define("cordova-plugin-file-transfer.FileTransfer", function(require, exports, module) { /*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+
+/* global cordova, FileSystem */
+
+var argscheck = require('cordova/argscheck'),
+ exec = require('cordova/exec'),
+ FileTransferError = require('./FileTransferError'),
+ ProgressEvent = require('cordova-plugin-file.ProgressEvent');
+
+function newProgressEvent(result) {
+ var pe = new ProgressEvent();
+ pe.lengthComputable = result.lengthComputable;
+ pe.loaded = result.loaded;
+ pe.total = result.total;
+ return pe;
+}
+
+function getUrlCredentials(urlString) {
+ var credentialsPattern = /^https?\:\/\/(?:(?:(([^:@\/]*)(?::([^@\/]*))?)?@)?([^:\/?#]*)(?::(\d*))?).*$/,
+ credentials = credentialsPattern.exec(urlString);
+
+ return credentials && credentials[1];
+}
+
+function getBasicAuthHeader(urlString) {
+ var header = null;
+
+
+ // This is changed due to MS Windows doesn't support credentials in http uris
+ // so we detect them by regexp and strip off from result url
+ // Proof: http://social.msdn.microsoft.com/Forums/windowsapps/en-US/a327cf3c-f033-4a54-8b7f-03c56ba3203f/windows-foundation-uri-security-problem
+
+ if (window.btoa) {
+ var credentials = getUrlCredentials(urlString);
+ if (credentials) {
+ var authHeader = "Authorization";
+ var authHeaderValue = "Basic " + window.btoa(credentials);
+
+ header = {
+ name : authHeader,
+ value : authHeaderValue
+ };
+ }
+ }
+
+ return header;
+}
+
+function convertHeadersToArray(headers) {
+ var result = [];
+ for (var header in headers) {
+ if (headers.hasOwnProperty(header)) {
+ var headerValue = headers[header];
+ result.push({
+ name: header,
+ value: headerValue.toString()
+ });
+ }
+ }
+ return result;
+}
+
+var idCounter = 0;
+
+/**
+ * FileTransfer uploads a file to a remote server.
+ * @constructor
+ */
+var FileTransfer = function() {
+ this._id = ++idCounter;
+ this.onprogress = null; // optional callback
+};
+
+/**
+* Given an absolute file path, uploads a file on the device to a remote server
+* using a multipart HTTP request.
+* @param filePath {String} Full path of the file on the device
+* @param server {String} URL of the server to receive the file
+* @param successCallback (Function} Callback to be invoked when upload has completed
+* @param errorCallback {Function} Callback to be invoked upon error
+* @param options {FileUploadOptions} Optional parameters such as file name and mimetype
+* @param trustAllHosts {Boolean} Optional trust all hosts (e.g. for self-signed certs), defaults to false
+*/
+FileTransfer.prototype.upload = function(filePath, server, successCallback, errorCallback, options, trustAllHosts) {
+ argscheck.checkArgs('ssFFO*', 'FileTransfer.upload', arguments);
+ // check for options
+ var fileKey = null;
+ var fileName = null;
+ var mimeType = null;
+ var params = null;
+ var chunkedMode = true;
+ var headers = null;
+ var httpMethod = null;
+ var basicAuthHeader = getBasicAuthHeader(server);
+ if (basicAuthHeader) {
+ server = server.replace(getUrlCredentials(server) + '@', '');
+
+ options = options || {};
+ options.headers = options.headers || {};
+ options.headers[basicAuthHeader.name] = basicAuthHeader.value;
+ }
+
+ if (options) {
+ fileKey = options.fileKey;
+ fileName = options.fileName;
+ mimeType = options.mimeType;
+ headers = options.headers;
+ httpMethod = options.httpMethod || "POST";
+ if (httpMethod.toUpperCase() == "PUT"){
+ httpMethod = "PUT";
+ } else {
+ httpMethod = "POST";
+ }
+ if (options.chunkedMode !== null || typeof options.chunkedMode != "undefined") {
+ chunkedMode = options.chunkedMode;
+ }
+ if (options.params) {
+ params = options.params;
+ }
+ else {
+ params = {};
+ }
+ }
+
+ if (cordova.platformId === "windowsphone") {
+ headers = headers && convertHeadersToArray(headers);
+ params = params && convertHeadersToArray(params);
+ }
+
+ var fail = errorCallback && function(e) {
+ var error = new FileTransferError(e.code, e.source, e.target, e.http_status, e.body, e.exception);
+ errorCallback(error);
+ };
+
+ var self = this;
+ var win = function(result) {
+ if (typeof result.lengthComputable != "undefined") {
+ if (self.onprogress) {
+ self.onprogress(newProgressEvent(result));
+ }
+ } else {
+ if (successCallback) {
+ successCallback(result);
+ }
+ }
+ };
+ exec(win, fail, 'FileTransfer', 'upload', [filePath, server, fileKey, fileName, mimeType, params, trustAllHosts, chunkedMode, headers, this._id, httpMethod]);
+};
+
+/**
+ * Downloads a file form a given URL and saves it to the specified directory.
+ * @param source {String} URL of the server to receive the file
+ * @param target {String} Full path of the file on the device
+ * @param successCallback (Function} Callback to be invoked when upload has completed
+ * @param errorCallback {Function} Callback to be invoked upon error
+ * @param trustAllHosts {Boolean} Optional trust all hosts (e.g. for self-signed certs), defaults to false
+ * @param options {FileDownloadOptions} Optional parameters such as headers
+ */
+FileTransfer.prototype.download = function(source, target, successCallback, errorCallback, trustAllHosts, options) {
+ argscheck.checkArgs('ssFF*', 'FileTransfer.download', arguments);
+ var self = this;
+
+ var basicAuthHeader = getBasicAuthHeader(source);
+ if (basicAuthHeader) {
+ source = source.replace(getUrlCredentials(source) + '@', '');
+
+ options = options || {};
+ options.headers = options.headers || {};
+ options.headers[basicAuthHeader.name] = basicAuthHeader.value;
+ }
+
+ var headers = null;
+ if (options) {
+ headers = options.headers || null;
+ }
+
+ if (cordova.platformId === "windowsphone" && headers) {
+ headers = convertHeadersToArray(headers);
+ }
+
+ var win = function(result) {
+ if (typeof result.lengthComputable != "undefined") {
+ if (self.onprogress) {
+ return self.onprogress(newProgressEvent(result));
+ }
+ } else if (successCallback) {
+ var entry = null;
+ if (result.isDirectory) {
+ entry = new (require('cordova-plugin-file.DirectoryEntry'))();
+ }
+ else if (result.isFile) {
+ entry = new (require('cordova-plugin-file.FileEntry'))();
+ }
+ entry.isDirectory = result.isDirectory;
+ entry.isFile = result.isFile;
+ entry.name = result.name;
+ entry.fullPath = result.fullPath;
+ entry.filesystem = new FileSystem(result.filesystemName || (result.filesystem == window.PERSISTENT ? 'persistent' : 'temporary'));
+ entry.nativeURL = result.nativeURL;
+ successCallback(entry);
+ }
+ };
+
+ var fail = errorCallback && function(e) {
+ var error = new FileTransferError(e.code, e.source, e.target, e.http_status, e.body, e.exception);
+ errorCallback(error);
+ };
+
+ exec(win, fail, 'FileTransfer', 'download', [source, target, trustAllHosts, this._id, headers]);
+};
+
+/**
+ * Aborts the ongoing file transfer on this object. The original error
+ * callback for the file transfer will be called if necessary.
+ */
+FileTransfer.prototype.abort = function() {
+ exec(null, null, 'FileTransfer', 'abort', [this._id]);
+};
+
+module.exports = FileTransfer;
+
+});
--- /dev/null
+cordova.define("cordova-plugin-file-transfer.FileTransferError", function(require, exports, module) { /*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+
+/**
+ * FileTransferError
+ * @constructor
+ */
+var FileTransferError = function(code, source, target, status, body, exception) {
+ this.code = code || null;
+ this.source = source || null;
+ this.target = target || null;
+ this.http_status = status || null;
+ this.body = body || null;
+ this.exception = exception || null;
+};
+
+FileTransferError.FILE_NOT_FOUND_ERR = 1;
+FileTransferError.INVALID_URL_ERR = 2;
+FileTransferError.CONNECTION_ERR = 3;
+FileTransferError.ABORT_ERR = 4;
+FileTransferError.NOT_MODIFIED_ERR = 5;
+
+module.exports = FileTransferError;
+
+});
--- /dev/null
+cordova.define("cordova-plugin-file-transfer.BrowserFileTransfer", function(require, exports, module) { /*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+
+/*global module, require*/
+
+var argscheck = require('cordova/argscheck'),
+ FileTransferError = require('./FileTransferError');
+
+function getParentPath(filePath) {
+ var pos = filePath.lastIndexOf('/');
+ return filePath.substring(0, pos + 1);
+}
+
+function getFileName(filePath) {
+ var pos = filePath.lastIndexOf('/');
+ return filePath.substring(pos + 1);
+}
+
+function getUrlCredentials(urlString) {
+ var credentialsPattern = /^https?\:\/\/(?:(?:(([^:@\/]*)(?::([^@\/]*))?)?@)?([^:\/?#]*)(?::(\d*))?).*$/,
+ credentials = credentialsPattern.exec(urlString);
+
+ return credentials && credentials[1];
+}
+
+function getBasicAuthHeader(urlString) {
+ var header = null;
+
+
+ // This is changed due to MS Windows doesn't support credentials in http uris
+ // so we detect them by regexp and strip off from result url
+ // Proof: http://social.msdn.microsoft.com/Forums/windowsapps/en-US/a327cf3c-f033-4a54-8b7f-03c56ba3203f/windows-foundation-uri-security-problem
+
+ if (window.btoa) {
+ var credentials = getUrlCredentials(urlString);
+ if (credentials) {
+ var authHeader = "Authorization";
+ var authHeaderValue = "Basic " + window.btoa(credentials);
+
+ header = {
+ name : authHeader,
+ value : authHeaderValue
+ };
+ }
+ }
+
+ return header;
+}
+
+function checkURL(url) {
+ return url.indexOf(' ') === -1 ? true : false;
+}
+
+var idCounter = 0;
+
+var transfers = {};
+
+/**
+ * FileTransfer uploads a file to a remote server.
+ * @constructor
+ */
+var FileTransfer = function() {
+ this._id = ++idCounter;
+ this.onprogress = null; // optional callback
+};
+
+/**
+ * Given an absolute file path, uploads a file on the device to a remote server
+ * using a multipart HTTP request.
+ * @param filePath {String} Full path of the file on the device
+ * @param server {String} URL of the server to receive the file
+ * @param successCallback (Function} Callback to be invoked when upload has completed
+ * @param errorCallback {Function} Callback to be invoked upon error
+ * @param options {FileUploadOptions} Optional parameters such as file name and mimetype
+ * @param trustAllHosts {Boolean} Optional trust all hosts (e.g. for self-signed certs), defaults to false
+ */
+FileTransfer.prototype.upload = function(filePath, server, successCallback, errorCallback, options) {
+ // check for arguments
+ argscheck.checkArgs('ssFFO*', 'FileTransfer.upload', arguments);
+
+ // Check if target URL doesn't contain spaces. If contains, it should be escaped first
+ // (see https://github.com/apache/cordova-plugin-file-transfer/blob/master/doc/index.md#upload)
+ if (!checkURL(server)) {
+ if (errorCallback) {
+ errorCallback(new FileTransferError(FileTransferError.INVALID_URL_ERR, filePath, server));
+ }
+ return;
+ }
+
+ options = options || {};
+
+ var fileKey = options.fileKey || "file";
+ var fileName = options.fileName || "image.jpg";
+ var mimeType = options.mimeType || "image/jpeg";
+ var params = options.params || {};
+ var withCredentials = options.withCredentials || false;
+ // var chunkedMode = !!options.chunkedMode; // Not supported
+ var headers = options.headers || {};
+ var httpMethod = options.httpMethod && options.httpMethod.toUpperCase() === "PUT" ? "PUT" : "POST";
+
+ var basicAuthHeader = getBasicAuthHeader(server);
+ if (basicAuthHeader) {
+ server = server.replace(getUrlCredentials(server) + '@', '');
+ headers[basicAuthHeader.name] = basicAuthHeader.value;
+ }
+
+ var that = this;
+ var xhr = transfers[this._id] = new XMLHttpRequest();
+ xhr.withCredentials = withCredentials;
+
+ var fail = errorCallback && function(code, status, response) {
+ if (transfers[this._id]) {
+ delete transfers[this._id];
+ }
+ var error = new FileTransferError(code, filePath, server, status, response);
+ if (errorCallback) {
+ errorCallback(error);
+ }
+ };
+
+ window.resolveLocalFileSystemURL(filePath, function(entry) {
+ entry.file(function(file) {
+ var reader = new FileReader();
+ reader.onloadend = function() {
+ var blob = new Blob([this.result], {type: mimeType});
+
+ // Prepare form data to send to server
+ var fd = new FormData();
+ fd.append(fileKey, blob, fileName);
+ for (var prop in params) {
+ if (params.hasOwnProperty(prop)) {
+ fd.append(prop, params[prop]);
+ }
+ }
+
+ xhr.open(httpMethod, server);
+
+ // Fill XHR headers
+ for (var header in headers) {
+ if (headers.hasOwnProperty(header)) {
+ xhr.setRequestHeader(header, headers[header]);
+ }
+ }
+
+ xhr.onload = function() {
+ // 2xx codes are valid
+ if (this.status >= 200 &&
+ this.status < 300) {
+ var result = new FileUploadResult(); // jshint ignore:line
+ result.bytesSent = blob.size;
+ result.responseCode = this.status;
+ result.response = this.response;
+ delete transfers[that._id];
+ successCallback(result);
+ } else if (this.status === 404) {
+ fail(FileTransferError.INVALID_URL_ERR, this.status, this.response);
+ } else {
+ fail(FileTransferError.CONNECTION_ERR, this.status, this.response);
+ }
+ };
+
+ xhr.ontimeout = function() {
+ fail(FileTransferError.CONNECTION_ERR, this.status, this.response);
+ };
+
+ xhr.onerror = function() {
+ fail(FileTransferError.CONNECTION_ERR, this.status, this.response);
+ };
+
+ xhr.onabort = function () {
+ fail(FileTransferError.ABORT_ERR, this.status, this.response);
+ };
+
+ xhr.upload.onprogress = function (e) {
+ if (that.onprogress) {
+ that.onprogress(e);
+ }
+ };
+
+ xhr.send(fd);
+ // Special case when transfer already aborted, but XHR isn't sent.
+ // In this case XHR won't fire an abort event, so we need to check if transfers record
+ // isn't deleted by filetransfer.abort and if so, call XHR's abort method again
+ if (!transfers[that._id]) {
+ xhr.abort();
+ }
+ };
+ reader.readAsArrayBuffer(file);
+ }, function() {
+ fail(FileTransferError.FILE_NOT_FOUND_ERR);
+ });
+ }, function() {
+ fail(FileTransferError.FILE_NOT_FOUND_ERR);
+ });
+};
+
+/**
+ * Downloads a file form a given URL and saves it to the specified directory.
+ * @param source {String} URL of the server to receive the file
+ * @param target {String} Full path of the file on the device
+ * @param successCallback (Function} Callback to be invoked when upload has completed
+ * @param errorCallback {Function} Callback to be invoked upon error
+ * @param trustAllHosts {Boolean} Optional trust all hosts (e.g. for self-signed certs), defaults to false
+ * @param options {FileDownloadOptions} Optional parameters such as headers
+ */
+FileTransfer.prototype.download = function(source, target, successCallback, errorCallback, trustAllHosts, options) {
+ argscheck.checkArgs('ssFF*', 'FileTransfer.download', arguments);
+
+ // Check if target URL doesn't contain spaces. If contains, it should be escaped first
+ // (see https://github.com/apache/cordova-plugin-file-transfer/blob/master/doc/index.md#download)
+ if (!checkURL(source)) {
+ if (errorCallback) {
+ errorCallback(new FileTransferError(FileTransferError.INVALID_URL_ERR, source, target));
+ }
+ return;
+ }
+
+ options = options || {};
+
+ var headers = options.headers || {};
+ var withCredentials = options.withCredentials || false;
+
+ var basicAuthHeader = getBasicAuthHeader(source);
+ if (basicAuthHeader) {
+ source = source.replace(getUrlCredentials(source) + '@', '');
+ headers[basicAuthHeader.name] = basicAuthHeader.value;
+ }
+
+ var that = this;
+ var xhr = transfers[this._id] = new XMLHttpRequest();
+ xhr.withCredentials = withCredentials;
+ var fail = errorCallback && function(code, status, response) {
+ if (transfers[that._id]) {
+ delete transfers[that._id];
+ }
+ // In XHR GET reqests we're setting response type to Blob
+ // but in case of error we need to raise event with plain text response
+ if (response instanceof Blob) {
+ var reader = new FileReader();
+ reader.readAsText(response);
+ reader.onloadend = function(e) {
+ var error = new FileTransferError(code, source, target, status, e.target.result);
+ errorCallback(error);
+ };
+ } else {
+ var error = new FileTransferError(code, source, target, status, response);
+ errorCallback(error);
+ }
+ };
+
+ xhr.onload = function (e) {
+
+ var fileNotFound = function () {
+ fail(FileTransferError.FILE_NOT_FOUND_ERR);
+ };
+
+ var req = e.target;
+ // req.status === 0 is special case for local files with file:// URI scheme
+ if ((req.status === 200 || req.status === 0) && req.response) {
+ window.resolveLocalFileSystemURL(getParentPath(target), function (dir) {
+ dir.getFile(getFileName(target), {create: true}, function writeFile(entry) {
+ entry.createWriter(function (fileWriter) {
+ fileWriter.onwriteend = function (evt) {
+ if (!evt.target.error) {
+ entry.filesystemName = entry.filesystem.name;
+ delete transfers[that._id];
+ if (successCallback) {
+ successCallback(entry);
+ }
+ } else {
+ fail(FileTransferError.FILE_NOT_FOUND_ERR);
+ }
+ };
+ fileWriter.onerror = function () {
+ fail(FileTransferError.FILE_NOT_FOUND_ERR);
+ };
+ fileWriter.write(req.response);
+ }, fileNotFound);
+ }, fileNotFound);
+ }, fileNotFound);
+ } else if (req.status === 404) {
+ fail(FileTransferError.INVALID_URL_ERR, req.status, req.response);
+ } else {
+ fail(FileTransferError.CONNECTION_ERR, req.status, req.response);
+ }
+ };
+
+ xhr.onprogress = function (e) {
+ if (that.onprogress) {
+ that.onprogress(e);
+ }
+ };
+
+ xhr.onerror = function () {
+ fail(FileTransferError.CONNECTION_ERR, this.status, this.response);
+ };
+
+ xhr.onabort = function () {
+ fail(FileTransferError.ABORT_ERR, this.status, this.response);
+ };
+
+ xhr.open("GET", source, true);
+
+ for (var header in headers) {
+ if (headers.hasOwnProperty(header)) {
+ xhr.setRequestHeader(header, headers[header]);
+ }
+ }
+
+ xhr.responseType = "blob";
+
+ xhr.send();
+};
+
+/**
+ * Aborts the ongoing file transfer on this object. The original error
+ * callback for the file transfer will be called if necessary.
+ */
+FileTransfer.prototype.abort = function() {
+ if (this instanceof FileTransfer) {
+ if (transfers[this._id]) {
+ transfers[this._id].abort();
+ delete transfers[this._id];
+ }
+ }
+};
+
+module.exports = FileTransfer;
+
+});
<key>ArchiveVersion</key>
<integer>2</integer>
<key>CreationDate</key>
- <date>2019-10-15T06:27:42Z</date>
+ <date>2019-12-05T03:31:51Z</date>
<key>Name</key>
<string>dlapp</string>
<key>SchemeName</key>
<dict>
<key>AppIcon20x20@2x.png</key>
<data>
- 4s3iHwVtc4D5rEDx0dsVP3Ccp+M=
+ ccS6pC3ve2K3q7Q0T5ChWwyXnrs=
</data>
<key>AppIcon20x20@2x~ipad.png</key>
<data>
- 4s3iHwVtc4D5rEDx0dsVP3Ccp+M=
+ ccS6pC3ve2K3q7Q0T5ChWwyXnrs=
</data>
<key>AppIcon20x20@3x.png</key>
<data>
- inNMZ0LYnXYtiXOTodGWImyL6MU=
+ GhZ+99neDdxiVNHn8p/7t9f0WRU=
</data>
<key>AppIcon20x20~ipad.png</key>
<data>
- QgEmJmozGUfF6Gxc90W4zVT/ZEk=
+ KKdJn0/ZdWeM5CyeUGdX1k3Ulvs=
</data>
<key>AppIcon29x29.png</key>
<data>
- HHDfUCqu1hpJ1qn2R16w+JzH8/k=
+ dZxsAzYemCu20R1t07HWjs5LOlE=
</data>
<key>AppIcon29x29@2x.png</key>
<data>
- dpGzXh2r7rpz2qmVWfS/drJRxFk=
+ R0vEfvATPAFnCHYMnHg1qoJA57Y=
</data>
<key>AppIcon29x29@2x~ipad.png</key>
<data>
- dpGzXh2r7rpz2qmVWfS/drJRxFk=
+ R0vEfvATPAFnCHYMnHg1qoJA57Y=
</data>
<key>AppIcon29x29@3x.png</key>
<data>
- gcxHkRSzkCsIG42uKL9uYXOrdJE=
+ RrPJcSN0hluyHzEVVtCzp9/YaPM=
</data>
<key>AppIcon29x29~ipad.png</key>
<data>
- HHDfUCqu1hpJ1qn2R16w+JzH8/k=
+ dZxsAzYemCu20R1t07HWjs5LOlE=
</data>
<key>AppIcon40x40@2x.png</key>
<data>
- BcBek5g6jsOqa0ibWCnC1JTgL+c=
+ BS4flHNyMz69N+DP5pU+eLZlHp8=
</data>
<key>AppIcon40x40@2x~ipad.png</key>
<data>
- BcBek5g6jsOqa0ibWCnC1JTgL+c=
+ BS4flHNyMz69N+DP5pU+eLZlHp8=
</data>
<key>AppIcon40x40@3x.png</key>
<data>
- +0oGxBUPkB+c6Z7XyUmtZpCo2lU=
+ GgR7ZKUL6tnhZi2VaWX9QUiExPY=
</data>
<key>AppIcon40x40~ipad.png</key>
<data>
- 4s3iHwVtc4D5rEDx0dsVP3Ccp+M=
+ ccS6pC3ve2K3q7Q0T5ChWwyXnrs=
</data>
<key>AppIcon60x60@2x.png</key>
<data>
- +0oGxBUPkB+c6Z7XyUmtZpCo2lU=
+ GgR7ZKUL6tnhZi2VaWX9QUiExPY=
</data>
<key>AppIcon60x60@3x.png</key>
<data>
- 2N92m9WnIZ8k7WASphMkppCl7HA=
+ gU5edvZx0WsuQ5EzxLy7eiiOmVo=
</data>
<key>AppIcon76x76@2x~ipad.png</key>
<data>
- iMfY34hWth/mR2xKqlWonHWYrDQ=
+ IvvQEhgl2Vu/ivPtc25ye4hwts8=
</data>
<key>AppIcon76x76~ipad.png</key>
<data>
- z6rQV98PVDRhQUXa/DwAbinm0SA=
+ iIx7D0jU/5FXBsFwS1+znaxCpkA=
</data>
<key>AppIcon83.5x83.5@2x~ipad.png</key>
<data>
- oJtSiDfNgPpCB0QhhFClnkrbXcQ=
+ ZIKT43nA0D1URGsAOPDKV+NZS8M=
</data>
<key>Assets.car</key>
<data>
- MI34mk5EtOkVCHYwJBxmd39rUbk=
+ e9+5CE8NLHRmZwrjjeZ5OyxzJqU=
</data>
<key>Frameworks/libswiftAVFoundation.dylib</key>
<data>
- BBuJ8uNJrWrURIdexWl4e+vXAvA=
+ dmDQw9y9GvcdtpoWZBMHwT1K17c=
</data>
<key>Frameworks/libswiftCore.dylib</key>
<data>
- pTbPSHWWYG/yscK8pmh9JLGa/gU=
+ 3zT2JcjxbeofEWNjBIZCE/PuSjw=
</data>
<key>Frameworks/libswiftCoreAudio.dylib</key>
<data>
- DsyD0FTqKYXHdKQ8o342ImVv/7Q=
+ GTT9D8redyF1vbkZ0D5Zobxe3cU=
</data>
<key>Frameworks/libswiftCoreFoundation.dylib</key>
<data>
- m6o/BG4l4chH3kGhzkxMA8Lh4fs=
+ juqWoBPjkkOkjY3otgQxSc1zkxw=
</data>
<key>Frameworks/libswiftCoreGraphics.dylib</key>
<data>
- peI1hRvkz/2wJYUVhxcjJ5AZJ/w=
+ hEeFWPEZNK+DBc171H2vJmaNEww=
</data>
<key>Frameworks/libswiftCoreImage.dylib</key>
<data>
- v4j+K3FiRAz0UoIhS/aE9kwxpHc=
+ srsBV/CBnRVmsOEmfbDxjnA2neA=
</data>
<key>Frameworks/libswiftCoreMedia.dylib</key>
<data>
- BPp/U4KnUvs/EIcuSuyjUEiCunM=
+ rcyGNo+lZP9hVzN7sjLpJO6e9YQ=
</data>
<key>Frameworks/libswiftDarwin.dylib</key>
<data>
- Rl5le1b8dTOLgzeejpIkLEFsgfM=
+ EFpRh65DL9akn+Z6ioeP2sjrllQ=
</data>
<key>Frameworks/libswiftDispatch.dylib</key>
<data>
- ZwVOe6/BFZQXWdo7M3VhyJC3TM8=
+ vBO/esLYhyJ7rkEbhvQi04JZ6iU=
</data>
<key>Frameworks/libswiftFoundation.dylib</key>
<data>
- QprHd55Ei5gjTxPmBVMkw0JfYAo=
+ 1oREHDzKKiajdNGHcuaW4qzORrU=
</data>
<key>Frameworks/libswiftMetal.dylib</key>
<data>
- 6pTO4txXfyz4hfKC7qOe2ZdJ1dg=
+ xMHjkPynvVQO70kI+xUD63pu1eE=
</data>
<key>Frameworks/libswiftObjectiveC.dylib</key>
<data>
- Vfj4ZqWFmvVgPHMkJXGsKnjVkig=
+ KdkvGCWAngQJpp6nxwLaQpiYW6A=
</data>
<key>Frameworks/libswiftQuartzCore.dylib</key>
<data>
- vC9jL88UMDMhknN4r/y6P4p8IIU=
+ p/AgbrtrlTXI7b9eqxVagyqxq3E=
</data>
<key>Frameworks/libswiftSwiftOnoneSupport.dylib</key>
<data>
- 3Rz7pIIRUUs4BJrkfMth2M8Z9K0=
+ QkG2/piR66ZmT/xtTOAg8YZ1YXs=
</data>
<key>Frameworks/libswiftUIKit.dylib</key>
<data>
- 0tEY9Ldxj6zceqZg2JXlDnHhDS8=
+ R2vzCSRtekxwt/w3hyC5uDQDP4U=
</data>
<key>Frameworks/libswiftos.dylib</key>
<data>
- A1vyKE/09WJVYoo7x0E3+ZVXeBM=
+ m3+9HKfuR3qMJDRQow6DtDyXQQ8=
</data>
<key>Frameworks/libswiftsimd.dylib</key>
<data>
- Q9gxSQV8yq+0XtSjd4c3qCNqghU=
+ Galldu67qIFDrTH/MeGzh8sDv9k=
</data>
<key>Info.plist</key>
<data>
</data>
<key>MainViewController.nib</key>
<data>
- h27QShEEqp2YliUGmzbvowlsX9I=
+ koWBzWcwwj6XJLRkyaGGkmV2Bcc=
</data>
<key>PkgInfo</key>
<data>
</data>
<key>config.xml</key>
<data>
- PZUzb4/2ynWqr9WkAFnsX6KOZ1k=
+ n1EAWuZ4faYwmjuBbQ0QES0F67A=
</data>
<key>embedded.mobileprovision</key>
<data>
</data>
<key>www/bindcheck.html</key>
<data>
- jGx5uAhkm+a3PdC0Z5ENLMfZa+M=
+ XH5dN9nTWa/E+s6V+Zwi0P/FUYw=
</data>
<key>www/card.html</key>
<data>
</data>
<key>www/cardinfor.html</key>
<data>
- QQg8HZreHawxjyGafVvCyGhCGrw=
+ RHBhk2UhuNxYzG8kf7pOAsw4kGU=
</data>
<key>www/cordova-js-src/exec.js</key>
<data>
</data>
<key>www/cordova_plugins.js</key>
<data>
- mjZMhcaV9rGT+gEJycqyUiJiwp8=
+ HQOKu0hTPe6fq1P1wO1LoP8HtgI=
</data>
<key>www/css/aui-iconfont.ttf</key>
<data>
</data>
<key>www/js/bindcard.js</key>
<data>
- 0B7mevzLJOBg0VXTUpHtZ//18PQ=
+ Ysntrs0q1qAqlEefYvglyu3eoI4=
</data>
<key>www/js/bindcheck.js</key>
<data>
- 5RfLHKNNVVwPSEOzS8TfUZ0lpJQ=
+ GTPsPGLI8aaV2k5LtPK0c2+NnGE=
</data>
<key>www/js/card.js</key>
<data>
</data>
<key>www/js/cardinfor.js</key>
<data>
- H5Qek3wUoBtXbL/Ry+v/gt4riXg=
+ 62jCoaZTsDLir4Rxq8Q8TIwQufc=
</data>
<key>www/js/db.js</key>
<data>
</data>
<key>www/js/main.js</key>
<data>
- 0GJu73OFCX3YlRcB4DWzCmggX94=
+ HpZT8Ysc+/FTRb3MxKtp3lvPYAM=
</data>
<key>www/js/mobile.js</key>
<data>
</data>
<key>www/js/qrcode.js</key>
<data>
- Cx6iRRJAH08QlPBBT//jwM7LZP4=
+ JeNJiL4CmSC5LsD8KK/ZtGtp70k=
</data>
<key>www/js/register.js</key>
<data>
- kEIN8Lt6KbeSEYmiYk47uhchWg8=
+ JQaJE5lT+p3bMdfpHRMD7mVk7rA=
</data>
<key>www/js/scan.js</key>
<data>
- u/uxG7pig1OIhkJvIOSMYiOTs8c=
+ 9kMdeIdvvtMD2cLcujur6+v1ntE=
</data>
<key>www/js/security.js</key>
<data>
</data>
<key>www/js/server.js</key>
<data>
- 7hP5JogQrZX3Y7gz7anbjekAU1k=
+ 6Cwg320/oc/nsmU2Fbj4eNG8dGo=
</data>
<key>www/js/signxy.js</key>
<data>
</data>
<key>www/js/signxycheck.js</key>
<data>
- OQxn/Q3V2ODyeXPO0htt940uIyM=
+ 66nnYQb6FRQcu9XGNEDjLhRZRaQ=
</data>
<key>www/js/uxy.js</key>
<data>
</data>
<key>www/main.html</key>
<data>
- PEdyDAoIJ4z2Zwdw7nZQKul7P9M=
+ SVOoElUZsKWPwn7lvgGYAuu4wPs=
</data>
<key>www/main1.html</key>
<data>
<data>
heGNNKQaZlidpB3qvXFXCW/7bX0=
</data>
+ <key>www/my.html</key>
+ <data>
+ BUBrEJQD4PffOvTDZFrKmckMu24=
+ </data>
<key>www/paypwdmng.html</key>
<data>
+Mjis5f4NK8v7VpKUbilfHxz4no=
<data>
V7Ywjbu2Kj4wesp8mWW2lF5aDpE=
</data>
+ <key>www/plugins/cordova-plugin-brightness/www/brightness.js</key>
+ <data>
+ FrJFTczXZ/W9VS3gElKUNATvxE4=
+ </data>
<key>www/plugins/cordova-plugin-camera/www/Camera.js</key>
<data>
/Tl12sGFo/UZbPqnupaaV0Hg0vU=
</data>
<key>www/qrcode.html</key>
<data>
- FK8oc1oB59vB31qmvZp+SzcB9/U=
+ PmFDX7bCnDmVlZ5pDAXyikKJwMQ=
</data>
<key>www/register.html</key>
<data>
</data>
<key>www/signxycheck.html</key>
<data>
- OC5VO7siXCVWFdZQFLrRkOG5Jdk=
+ 0eypcjj4wr9SerMRKUWVOazcxEU=
</data>
<key>www/uxy.html</key>
<data>
<dict>
<key>hash</key>
<data>
- 4s3iHwVtc4D5rEDx0dsVP3Ccp+M=
+ ccS6pC3ve2K3q7Q0T5ChWwyXnrs=
</data>
<key>hash2</key>
<data>
- /jx2HIiBG+oNpd+0usVeIZxAvkA27ZpiSAex3riWFHQ=
+ MsmE6TTzj1kEqSbH1BlcQ4QdZvL3Cy33ta/Sh6RqUw8=
</data>
</dict>
<key>AppIcon20x20@2x~ipad.png</key>
<dict>
<key>hash</key>
<data>
- 4s3iHwVtc4D5rEDx0dsVP3Ccp+M=
+ ccS6pC3ve2K3q7Q0T5ChWwyXnrs=
</data>
<key>hash2</key>
<data>
- /jx2HIiBG+oNpd+0usVeIZxAvkA27ZpiSAex3riWFHQ=
+ MsmE6TTzj1kEqSbH1BlcQ4QdZvL3Cy33ta/Sh6RqUw8=
</data>
</dict>
<key>AppIcon20x20@3x.png</key>
<dict>
<key>hash</key>
<data>
- inNMZ0LYnXYtiXOTodGWImyL6MU=
+ GhZ+99neDdxiVNHn8p/7t9f0WRU=
</data>
<key>hash2</key>
<data>
- BR1eZknKOY1H7MAyXZld2yKSOCayLZBdlj5QRFNTSws=
+ ZwyEzr6tEUlDxmAvi9vcjkdY4EihbJZqSM/cGEQHPG8=
</data>
</dict>
<key>AppIcon20x20~ipad.png</key>
<dict>
<key>hash</key>
<data>
- QgEmJmozGUfF6Gxc90W4zVT/ZEk=
+ KKdJn0/ZdWeM5CyeUGdX1k3Ulvs=
</data>
<key>hash2</key>
<data>
- Ck2d8ewvZ1cjSx6Vo6hRiwiKcwV7Khb61Rslp5EBorE=
+ d3IKJOYrSapm2LZSsPpnNaIfiacEh5zrYjyeL24bi1o=
</data>
</dict>
<key>AppIcon29x29.png</key>
<dict>
<key>hash</key>
<data>
- HHDfUCqu1hpJ1qn2R16w+JzH8/k=
+ dZxsAzYemCu20R1t07HWjs5LOlE=
</data>
<key>hash2</key>
<data>
- lFwBNCRgbv9HY1G5bOKNhPiyURhYafyWeI84Xcl8ljg=
+ onxUDJUW/zHu3m5H+9mJBqcONmO769E4c/0uE7fAPo4=
</data>
</dict>
<key>AppIcon29x29@2x.png</key>
<dict>
<key>hash</key>
<data>
- dpGzXh2r7rpz2qmVWfS/drJRxFk=
+ R0vEfvATPAFnCHYMnHg1qoJA57Y=
</data>
<key>hash2</key>
<data>
- nqN/EqFaooiXfy5K9WhOXvone1cRRvxgsXw4DnLmVlA=
+ sBLYe+F/UI90kgRg6HHpEGPcYIrGhSizKGSbzLZYnyc=
</data>
</dict>
<key>AppIcon29x29@2x~ipad.png</key>
<dict>
<key>hash</key>
<data>
- dpGzXh2r7rpz2qmVWfS/drJRxFk=
+ R0vEfvATPAFnCHYMnHg1qoJA57Y=
</data>
<key>hash2</key>
<data>
- nqN/EqFaooiXfy5K9WhOXvone1cRRvxgsXw4DnLmVlA=
+ sBLYe+F/UI90kgRg6HHpEGPcYIrGhSizKGSbzLZYnyc=
</data>
</dict>
<key>AppIcon29x29@3x.png</key>
<dict>
<key>hash</key>
<data>
- gcxHkRSzkCsIG42uKL9uYXOrdJE=
+ RrPJcSN0hluyHzEVVtCzp9/YaPM=
</data>
<key>hash2</key>
<data>
- 4VwirX+1pgq35pmm0UyXcG2+NXkxl6DvDAFQ9dvqiLs=
+ gZW7wGeYjOoAtkOf4paX58K65oUqySqICya26prwmaw=
</data>
</dict>
<key>AppIcon29x29~ipad.png</key>
<dict>
<key>hash</key>
<data>
- HHDfUCqu1hpJ1qn2R16w+JzH8/k=
+ dZxsAzYemCu20R1t07HWjs5LOlE=
</data>
<key>hash2</key>
<data>
- lFwBNCRgbv9HY1G5bOKNhPiyURhYafyWeI84Xcl8ljg=
+ onxUDJUW/zHu3m5H+9mJBqcONmO769E4c/0uE7fAPo4=
</data>
</dict>
<key>AppIcon40x40@2x.png</key>
<dict>
<key>hash</key>
<data>
- BcBek5g6jsOqa0ibWCnC1JTgL+c=
+ BS4flHNyMz69N+DP5pU+eLZlHp8=
</data>
<key>hash2</key>
<data>
- 9WHfcGm0K8HueWfC1UjexYAfaBhvFKeDZfsEyFCEtx4=
+ EvDh32SrdFfyGSkceOrHpYaGmfUw7pDIkd3OvLiPo28=
</data>
</dict>
<key>AppIcon40x40@2x~ipad.png</key>
<dict>
<key>hash</key>
<data>
- BcBek5g6jsOqa0ibWCnC1JTgL+c=
+ BS4flHNyMz69N+DP5pU+eLZlHp8=
</data>
<key>hash2</key>
<data>
- 9WHfcGm0K8HueWfC1UjexYAfaBhvFKeDZfsEyFCEtx4=
+ EvDh32SrdFfyGSkceOrHpYaGmfUw7pDIkd3OvLiPo28=
</data>
</dict>
<key>AppIcon40x40@3x.png</key>
<dict>
<key>hash</key>
<data>
- +0oGxBUPkB+c6Z7XyUmtZpCo2lU=
+ GgR7ZKUL6tnhZi2VaWX9QUiExPY=
</data>
<key>hash2</key>
<data>
- F6dGIPQp/X9Huj5SI1FnfRlgqZsfJ8plPgS5DLXmyHc=
+ cs6fxgIoK170dcGdkiAhzRTfYvUHvnT0zCQIjXRqLDE=
</data>
</dict>
<key>AppIcon40x40~ipad.png</key>
<dict>
<key>hash</key>
<data>
- 4s3iHwVtc4D5rEDx0dsVP3Ccp+M=
+ ccS6pC3ve2K3q7Q0T5ChWwyXnrs=
</data>
<key>hash2</key>
<data>
- /jx2HIiBG+oNpd+0usVeIZxAvkA27ZpiSAex3riWFHQ=
+ MsmE6TTzj1kEqSbH1BlcQ4QdZvL3Cy33ta/Sh6RqUw8=
</data>
</dict>
<key>AppIcon60x60@2x.png</key>
<dict>
<key>hash</key>
<data>
- +0oGxBUPkB+c6Z7XyUmtZpCo2lU=
+ GgR7ZKUL6tnhZi2VaWX9QUiExPY=
</data>
<key>hash2</key>
<data>
- F6dGIPQp/X9Huj5SI1FnfRlgqZsfJ8plPgS5DLXmyHc=
+ cs6fxgIoK170dcGdkiAhzRTfYvUHvnT0zCQIjXRqLDE=
</data>
</dict>
<key>AppIcon60x60@3x.png</key>
<dict>
<key>hash</key>
<data>
- 2N92m9WnIZ8k7WASphMkppCl7HA=
+ gU5edvZx0WsuQ5EzxLy7eiiOmVo=
</data>
<key>hash2</key>
<data>
- dQmhVBOE7LllJ1jQuS6MlUwqAY9rw3N83U9OpTvQmUI=
+ u3YgSHECpcRbp4Wa59b47Zwm+bCrrzSrS1JmUG6BtGo=
</data>
</dict>
<key>AppIcon76x76@2x~ipad.png</key>
<dict>
<key>hash</key>
<data>
- iMfY34hWth/mR2xKqlWonHWYrDQ=
+ IvvQEhgl2Vu/ivPtc25ye4hwts8=
</data>
<key>hash2</key>
<data>
- zDK30NWfjipDfaQp5rJ1roBf5sk1HCHP1AHfE8Koa3c=
+ Wgdfvd/gB5hdNDv9cwcZASD/YrHBus8NjmInFDI1J+A=
</data>
</dict>
<key>AppIcon76x76~ipad.png</key>
<dict>
<key>hash</key>
<data>
- z6rQV98PVDRhQUXa/DwAbinm0SA=
+ iIx7D0jU/5FXBsFwS1+znaxCpkA=
</data>
<key>hash2</key>
<data>
- SEIGmphMB4mPWfJUCc/8/OEHXuPaOTnpwx7fqG/I01U=
+ wOX8ArTYN5K2FpMXLGclESNN1lIEev2DJBLmfMYOUwg=
</data>
</dict>
<key>AppIcon83.5x83.5@2x~ipad.png</key>
<dict>
<key>hash</key>
<data>
- oJtSiDfNgPpCB0QhhFClnkrbXcQ=
+ ZIKT43nA0D1URGsAOPDKV+NZS8M=
</data>
<key>hash2</key>
<data>
- p9CZ5DH6P6Cwm2CIRfkZRVd5VcVYXRhHPP0Zdeujh7o=
+ tTaeRZFYhMoDi2ZImxgarDOCu32VsnidQxbXySCYSIQ=
</data>
</dict>
<key>Assets.car</key>
<dict>
<key>hash</key>
<data>
- MI34mk5EtOkVCHYwJBxmd39rUbk=
+ e9+5CE8NLHRmZwrjjeZ5OyxzJqU=
</data>
<key>hash2</key>
<data>
- uO+oqQYOdNiKEekqzK4ijCuCF/a4db6Mq2/LLL5vdf0=
+ z6pNTT1RTC09Zjpy2bxhJWQCeGSPvt3+kTJ3CVT7R+4=
</data>
</dict>
<key>Frameworks/libswiftAVFoundation.dylib</key>
<dict>
<key>hash</key>
<data>
- BBuJ8uNJrWrURIdexWl4e+vXAvA=
+ dmDQw9y9GvcdtpoWZBMHwT1K17c=
</data>
<key>hash2</key>
<data>
- d7GBGJ88UJXlcjpidc9UpdiVDowkgZKRfhEp6wUJ3Ns=
+ uTMRUm0VqcFy37eIRUW4qsiF9S4trLtowk/jCUKH6N0=
</data>
</dict>
<key>Frameworks/libswiftCore.dylib</key>
<dict>
<key>hash</key>
<data>
- pTbPSHWWYG/yscK8pmh9JLGa/gU=
+ 3zT2JcjxbeofEWNjBIZCE/PuSjw=
</data>
<key>hash2</key>
<data>
- jblnNK1CWUwV17+/SUKyUv4Fmb4siTscmDzLy2PzalQ=
+ WSbGoO8iA7F9/Jh8n/ffunc8LLNG23/oXSZHakkRZAs=
</data>
</dict>
<key>Frameworks/libswiftCoreAudio.dylib</key>
<dict>
<key>hash</key>
<data>
- DsyD0FTqKYXHdKQ8o342ImVv/7Q=
+ GTT9D8redyF1vbkZ0D5Zobxe3cU=
</data>
<key>hash2</key>
<data>
- asjY2hknIzUab1BxkSMdcSn3ee03/69poDXj6hLXwmE=
+ QUHqXaYMt0GtY8pQnAoP76HgM2ptnK1FTaPKuucWiDg=
</data>
</dict>
<key>Frameworks/libswiftCoreFoundation.dylib</key>
<dict>
<key>hash</key>
<data>
- m6o/BG4l4chH3kGhzkxMA8Lh4fs=
+ juqWoBPjkkOkjY3otgQxSc1zkxw=
</data>
<key>hash2</key>
<data>
- pZBaz9EW7u38t7hqTe0TDFsNFrdQBKnGW/+ZXMBMhss=
+ UChvnOGr7S5lSleyuqPmwisEXpzi+LOw7G5LgmCOVPI=
</data>
</dict>
<key>Frameworks/libswiftCoreGraphics.dylib</key>
<dict>
<key>hash</key>
<data>
- peI1hRvkz/2wJYUVhxcjJ5AZJ/w=
+ hEeFWPEZNK+DBc171H2vJmaNEww=
</data>
<key>hash2</key>
<data>
- kBO8Kl3ds8wsnUOYL32g9BUEwELWNjAXAhpGA21+HKA=
+ xd2hz37QDRWhBZi0N0YZpLZ6b6SBn6uMgFMBYVBbA/E=
</data>
</dict>
<key>Frameworks/libswiftCoreImage.dylib</key>
<dict>
<key>hash</key>
<data>
- v4j+K3FiRAz0UoIhS/aE9kwxpHc=
+ srsBV/CBnRVmsOEmfbDxjnA2neA=
</data>
<key>hash2</key>
<data>
- nac0nVGh8w40GNw+4tWE//3bl9iYMIFzW4vmI/j0xJM=
+ uijDFlioqd8tgh8DYkP+/Hv9CHRUdOD62MHhEdR5b4Y=
</data>
</dict>
<key>Frameworks/libswiftCoreMedia.dylib</key>
<dict>
<key>hash</key>
<data>
- BPp/U4KnUvs/EIcuSuyjUEiCunM=
+ rcyGNo+lZP9hVzN7sjLpJO6e9YQ=
</data>
<key>hash2</key>
<data>
- U3QuWNbGqePs/LgfOxB9hU/lNooMogZWgnvRpcbgftM=
+ Gd3ECjIsgZErJwfF+lUValGdezl4W3Iy//pQOcW27K4=
</data>
</dict>
<key>Frameworks/libswiftDarwin.dylib</key>
<dict>
<key>hash</key>
<data>
- Rl5le1b8dTOLgzeejpIkLEFsgfM=
+ EFpRh65DL9akn+Z6ioeP2sjrllQ=
</data>
<key>hash2</key>
<data>
- aFXxvzO47QW6Yuw8F31XrkEAPIZ518pYm3HajzW0hJ4=
+ sTgr1BEKCgBu+Fw40N/pJ0ggfWYe8WmunldRw06uaWk=
</data>
</dict>
<key>Frameworks/libswiftDispatch.dylib</key>
<dict>
<key>hash</key>
<data>
- ZwVOe6/BFZQXWdo7M3VhyJC3TM8=
+ vBO/esLYhyJ7rkEbhvQi04JZ6iU=
</data>
<key>hash2</key>
<data>
- HPX9eGXjnf04VcRF9oQpnCh/tDfurqRzU9TJaSpY4pU=
+ R0PbCUcYaEKpdm5aJ2/FQ1ECYWpIOoyl0TF1gdN7u5A=
</data>
</dict>
<key>Frameworks/libswiftFoundation.dylib</key>
<dict>
<key>hash</key>
<data>
- QprHd55Ei5gjTxPmBVMkw0JfYAo=
+ 1oREHDzKKiajdNGHcuaW4qzORrU=
</data>
<key>hash2</key>
<data>
- qBHE5OUugUs5FnLR7A6gKW4VwCHYHMhAU+DrKQnNlQE=
+ /iHrWF/ujVm3A+S6ebyrh7ScUbEmduaB+uJdk7olM8Y=
</data>
</dict>
<key>Frameworks/libswiftMetal.dylib</key>
<dict>
<key>hash</key>
<data>
- 6pTO4txXfyz4hfKC7qOe2ZdJ1dg=
+ xMHjkPynvVQO70kI+xUD63pu1eE=
</data>
<key>hash2</key>
<data>
- EhdUiIrVd7iF8MhxoNg0fQtL8y07sba269/5Lc8VLFA=
+ RAvPyJ2ZYiYD7/ByGol66KRd7PhjBuoKv5LfqiMZMsA=
</data>
</dict>
<key>Frameworks/libswiftObjectiveC.dylib</key>
<dict>
<key>hash</key>
<data>
- Vfj4ZqWFmvVgPHMkJXGsKnjVkig=
+ KdkvGCWAngQJpp6nxwLaQpiYW6A=
</data>
<key>hash2</key>
<data>
- xd8CDu0sjqbrupXDENHFR4DZj7gc6YGcEstyRUa9iOg=
+ upd25/zAqhaR4eNZ08pfAKgYHqRzW6//OwD/KpmS2bY=
</data>
</dict>
<key>Frameworks/libswiftQuartzCore.dylib</key>
<dict>
<key>hash</key>
<data>
- vC9jL88UMDMhknN4r/y6P4p8IIU=
+ p/AgbrtrlTXI7b9eqxVagyqxq3E=
</data>
<key>hash2</key>
<data>
- LVpsrClPMhwoCxYgGdvl6oFT/d4TK2wDp5icwZyD+8g=
+ vFMv8rZ4upTxXYKpvSQZuAugl3ltOGYaX/LtIWoMitE=
</data>
</dict>
<key>Frameworks/libswiftSwiftOnoneSupport.dylib</key>
<dict>
<key>hash</key>
<data>
- 3Rz7pIIRUUs4BJrkfMth2M8Z9K0=
+ QkG2/piR66ZmT/xtTOAg8YZ1YXs=
</data>
<key>hash2</key>
<data>
- MsKil6JqwHfu4+8fStyHf3RpXOBPSs0JdyxrAQxBWuw=
+ R+cBZr/hVR/dPCgEV4SbpT44gAx6aI3H2/yMmFUqar4=
</data>
</dict>
<key>Frameworks/libswiftUIKit.dylib</key>
<dict>
<key>hash</key>
<data>
- 0tEY9Ldxj6zceqZg2JXlDnHhDS8=
+ R2vzCSRtekxwt/w3hyC5uDQDP4U=
</data>
<key>hash2</key>
<data>
- klDw4B7e7ynMPKIJ1GhZpBFjE5WEJ2h71dkIGj0GraE=
+ PvTYCyFwbZiEbJ7aXR2X5i5ANnfMtiQ8bR3Tviscaik=
</data>
</dict>
<key>Frameworks/libswiftos.dylib</key>
<dict>
<key>hash</key>
<data>
- A1vyKE/09WJVYoo7x0E3+ZVXeBM=
+ m3+9HKfuR3qMJDRQow6DtDyXQQ8=
</data>
<key>hash2</key>
<data>
- xY7vJEHoJdTu/o0ZpKxTJSllUToMl6Ad6eCSfkhQN6k=
+ tv80YkF7OiONqp8laV1iPgLrnJwrUgaCT+bCHzDelmE=
</data>
</dict>
<key>Frameworks/libswiftsimd.dylib</key>
<dict>
<key>hash</key>
<data>
- Q9gxSQV8yq+0XtSjd4c3qCNqghU=
+ Galldu67qIFDrTH/MeGzh8sDv9k=
</data>
<key>hash2</key>
<data>
- JjSEYizqevaXQNra2PZx9+82xduqZlc+vVRIfuSSzWA=
+ Ir4rA18QhYdUfm7//DP56JZubdVNSY7LRSnjddCYRN8=
</data>
</dict>
<key>JPushConfig.plist</key>
<dict>
<key>hash</key>
<data>
- h27QShEEqp2YliUGmzbvowlsX9I=
+ koWBzWcwwj6XJLRkyaGGkmV2Bcc=
</data>
<key>hash2</key>
<data>
- QDd8NaAdWQLfXjj1XMvoaqVfhmYvLf9OwrQ0CPKsob4=
+ QrGika2EwsYPw4qDYyjWY+tKBAJUKrq60LVbb7m1dF0=
</data>
</dict>
<key>config.xml</key>
<dict>
<key>hash</key>
<data>
- PZUzb4/2ynWqr9WkAFnsX6KOZ1k=
+ n1EAWuZ4faYwmjuBbQ0QES0F67A=
</data>
<key>hash2</key>
<data>
- Rc9fXTgQhylUY1cVz6eRZG2E2MiHf7lNVaYC/IY6ZD8=
+ 1XwfAuQjuTHoqw6dtT6caUUQZzuM+B7w5txQLmLiwMQ=
</data>
</dict>
<key>embedded.mobileprovision</key>
<dict>
<key>hash</key>
<data>
- jGx5uAhkm+a3PdC0Z5ENLMfZa+M=
+ XH5dN9nTWa/E+s6V+Zwi0P/FUYw=
</data>
<key>hash2</key>
<data>
- xlAGhILXieaQ+He/c01QmmUhffREXODF7o31Lf64ah8=
+ VTUsTd+9TLvVRzDGZmPWE0KWjMPL1SZzMwcSf3gSRzk=
</data>
</dict>
<key>www/card.html</key>
<dict>
<key>hash</key>
<data>
- QQg8HZreHawxjyGafVvCyGhCGrw=
+ RHBhk2UhuNxYzG8kf7pOAsw4kGU=
</data>
<key>hash2</key>
<data>
- dLCHrYVEZUVA/9OSA1MYq9G/NQhW9Q6iTid44oVzVCc=
+ rlU4EBXI/nZ53oKehs/zRVeck4i/V6M0Yr6DATYt9GQ=
</data>
</dict>
<key>www/cordova-js-src/exec.js</key>
<dict>
<key>hash</key>
<data>
- mjZMhcaV9rGT+gEJycqyUiJiwp8=
+ HQOKu0hTPe6fq1P1wO1LoP8HtgI=
</data>
<key>hash2</key>
<data>
- NAGln7mA1gWlhX8EULmd8KjWEz3VwOZVBK1TutRZiQ4=
+ sm2blQo73RzNr/seRXdVpGhyUzyFYU7GIHsuYEERK0I=
</data>
</dict>
<key>www/css/aui-iconfont.ttf</key>
<dict>
<key>hash</key>
<data>
- 0B7mevzLJOBg0VXTUpHtZ//18PQ=
+ Ysntrs0q1qAqlEefYvglyu3eoI4=
</data>
<key>hash2</key>
<data>
- RTbz/7lGwjEFRysFNUCFqZu0zLr5jrz4hYhhqEhW6co=
+ CO2rVnhm3/WaB883+VEt+r4jiBGJESy3xQWdp8GUT7c=
</data>
</dict>
<key>www/js/bindcheck.js</key>
<dict>
<key>hash</key>
<data>
- 5RfLHKNNVVwPSEOzS8TfUZ0lpJQ=
+ GTPsPGLI8aaV2k5LtPK0c2+NnGE=
</data>
<key>hash2</key>
<data>
- iIc+Xy+koHZAAKkSK4SrrTOz6KoHuiM/du4yk7IV3xI=
+ +DGxUBVhoqEwBw5z3SiT5FYooZDZHMvJMVDCh+nW+x4=
</data>
</dict>
<key>www/js/card.js</key>
<dict>
<key>hash</key>
<data>
- H5Qek3wUoBtXbL/Ry+v/gt4riXg=
+ 62jCoaZTsDLir4Rxq8Q8TIwQufc=
</data>
<key>hash2</key>
<data>
- ImlzAkXWit52+Okzsr+w8kHaTnJMmM0IHcp5lU6u9zw=
+ z5IvWANnFsUHTM0eF7PrmN7mA0l6oGhJQ9uQNwTxTl8=
</data>
</dict>
<key>www/js/db.js</key>
<dict>
<key>hash</key>
<data>
- 0GJu73OFCX3YlRcB4DWzCmggX94=
+ HpZT8Ysc+/FTRb3MxKtp3lvPYAM=
</data>
<key>hash2</key>
<data>
- yGpzeGfw2KACSa3Hu+tA/5uXUpfDEj2LubnWxDqJxFs=
+ YmWMZ4ay1dj6Sv3/gBd9FKw+Cx778K7ZxZv+ivK0aRg=
</data>
</dict>
<key>www/js/mobile.js</key>
<dict>
<key>hash</key>
<data>
- Cx6iRRJAH08QlPBBT//jwM7LZP4=
+ JeNJiL4CmSC5LsD8KK/ZtGtp70k=
</data>
<key>hash2</key>
<data>
- y5y66ieXeEONknB6UKddmxUSVsTEKM0JD/kEZBuBQ+I=
+ nE3dTx5GBPzcOVSZafV7jam4d1ZWYdsTK2hW140AEYg=
</data>
</dict>
<key>www/js/register.js</key>
<dict>
<key>hash</key>
<data>
- kEIN8Lt6KbeSEYmiYk47uhchWg8=
+ JQaJE5lT+p3bMdfpHRMD7mVk7rA=
</data>
<key>hash2</key>
<data>
- SWhxKePIt9pzPkMUPoRj0WTaXD4Z7GYBGqdsoqvRyuo=
+ x+qKVPMMkoIo27fquMOLrq+XQFV42PVbuDC6cjvtkl8=
</data>
</dict>
<key>www/js/scan.js</key>
<dict>
<key>hash</key>
<data>
- u/uxG7pig1OIhkJvIOSMYiOTs8c=
+ 9kMdeIdvvtMD2cLcujur6+v1ntE=
</data>
<key>hash2</key>
<data>
- gPLadH5W2VlCuZ52V99qWeU68uCz62OtFYHpY3jTFBc=
+ 8cb+0T4ga9G125lfrCJTBtT6K/LUyXyXJPU4ofn4A+g=
</data>
</dict>
<key>www/js/security.js</key>
<dict>
<key>hash</key>
<data>
- 7hP5JogQrZX3Y7gz7anbjekAU1k=
+ 6Cwg320/oc/nsmU2Fbj4eNG8dGo=
</data>
<key>hash2</key>
<data>
- 2ffigLo1Xa+Z/rgoGad55by5Ug4RwJz4mZ2lOkasD/c=
+ mVXgdJ2LEIOlzsufDFQJGy3EL1rlWr+TWn3jhnH0of8=
</data>
</dict>
<key>www/js/signxy.js</key>
<dict>
<key>hash</key>
<data>
- OQxn/Q3V2ODyeXPO0htt940uIyM=
+ 66nnYQb6FRQcu9XGNEDjLhRZRaQ=
</data>
<key>hash2</key>
<data>
- eW7ouno0m+7r/ecUWfaUCLB8d/xGdvBMxK+RmBI3bYQ=
+ ZcabwVnNmUkVPMvmDMoeSie8f33j0aBksf199emc9T4=
</data>
</dict>
<key>www/js/uxy.js</key>
<dict>
<key>hash</key>
<data>
- PEdyDAoIJ4z2Zwdw7nZQKul7P9M=
+ SVOoElUZsKWPwn7lvgGYAuu4wPs=
</data>
<key>hash2</key>
<data>
- 8D/UG2CsfJAhOus4F7r4s3uOZI76ibYPcwpvMMIZv0c=
+ wX11N5M8XIFOUBDxbYR33D3IXyMzsyg2nA6LqD2DTg4=
</data>
</dict>
<key>www/main1.html</key>
otER8eJerTAz1mG9IypR/8h6ZnJtH1dwz3H0eVsHA5M=
</data>
</dict>
+ <key>www/my.html</key>
+ <dict>
+ <key>hash</key>
+ <data>
+ BUBrEJQD4PffOvTDZFrKmckMu24=
+ </data>
+ <key>hash2</key>
+ <data>
+ jrzhEa99VLLIvclsq6udEOfzFfOvq2eTC+I1LBy9hsE=
+ </data>
+ </dict>
<key>www/paypwdmng.html</key>
<dict>
<key>hash</key>
hULEK/sXXYA5Q+DEGduyGZlT2gUtMhRcybSoo9TWM+0=
</data>
</dict>
+ <key>www/plugins/cordova-plugin-brightness/www/brightness.js</key>
+ <dict>
+ <key>hash</key>
+ <data>
+ FrJFTczXZ/W9VS3gElKUNATvxE4=
+ </data>
+ <key>hash2</key>
+ <data>
+ KRfwyv/7WE/uiPHoXPiJHi/ZptefxPS/08ettF1uOuY=
+ </data>
+ </dict>
<key>www/plugins/cordova-plugin-camera/www/Camera.js</key>
<dict>
<key>hash</key>
<dict>
<key>hash</key>
<data>
- FK8oc1oB59vB31qmvZp+SzcB9/U=
+ PmFDX7bCnDmVlZ5pDAXyikKJwMQ=
</data>
<key>hash2</key>
<data>
- hKaZe4Brj53BLM4b10F58QehbRHB4aCSmOpVeXW/8sM=
+ JsVXB5l7Z9EaOIrvC0frSCDKRbXgmplNjiZk1bh02VM=
</data>
</dict>
<key>www/register.html</key>
<dict>
<key>hash</key>
<data>
- OC5VO7siXCVWFdZQFLrRkOG5Jdk=
+ 0eypcjj4wr9SerMRKUWVOazcxEU=
</data>
<key>hash2</key>
<data>
- K+OIpvhIfjlVjmqcZ0zX2HKs3wgjAPTg2JdK+oCYhGg=
+ VYrrnWZvzLvw19ynhsBzLskzFV66f9OLlBWDtIr8LhM=
</data>
</dict>
<key>www/uxy.html</key>
<feature name="CDVWKWebViewEngine">
<param name="ios-package" value="CDVWKWebViewEngine" />
</feature>
+ <feature name="Brightness">
+ <param name="ios-package" value="Brightness" />
+ </feature>
<name short="大理市民卡">dlapp</name>
<description>
A sample Apache Cordova application that responds to the deviceready event.
<div class="weui-cell__bd">
<input class="weui-input" type="tel" id="code" style="font-size: 14px;" placeholder="请输入验证码" maxlength="6">
</div>
+ <div class="weui-cell__ft">
+ <button class="weui-vcode-btn" onclick="app.getCode()" id="codebtn" style="width: 100px;height: 1rem;font-size: 14px;">获取验证码</button>
+ </div>
</div>
</div>
<section class="aui-content-padded" style="margin-top: 30px;">
<div class="weui-cell__ft" id="cardstatus"></div>
</div>
</div>
+ <div style="padding: 20px;margin-top: 40px;">
+ <a href="javascript:app.unBindcard();" class="weui-btn weui-btn_warn">解除绑定</a>
+ </div>
</div>
</body>
</html>
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="js/lib/jquery-2.1.4.js"></script>
<script type="text/javascript" src="js/lib/jquery-weui.js"></script>
+<script type="text/javascript" src="js/lib/aui-dialog.js"></script>
<script type="text/javascript" src="js/server.js"></script>
<script type="text/javascript" src="js/cardinfor.js"></script>
\ No newline at end of file
"clobbers": [
"window.WkWebView"
]
+ },
+ {
+ "id": "cordova-plugin-brightness.Brightness",
+ "file": "plugins/cordova-plugin-brightness/www/brightness.js",
+ "pluginId": "cordova-plugin-brightness",
+ "clobbers": [
+ "cordova.plugins.brightness"
+ ]
}
];
module.exports.metadata = {
"cordova-plugin-jcore": "1.3.0",
"jpush-phonegap-plugin": "3.7.2",
"cordova-plugin-app-version": "0.1.9",
- "cordova-plugin-wkwebview-engine": "1.2.1"
+ "cordova-plugin-wkwebview-engine": "1.2.1",
+ "cordova-plugin-brightness": "0.1.5"
};
});
\ No newline at end of file
let vals = Object.values(dict);
console.log(keys, vals)
var items=[];
+ var selectItem=items[0];
for(var key of keys){
var bean = {
"title":dict[key],
"value":key
}
+ if(key == 'idcard'){
+ selectItem=bean;
+ }
items.push(bean)
}
- $("#idtype").val(items[0].title)
- $("#idtype").attr("data-values",items[0].value)
+ $("#idtype").val(selectItem.title)
+ $("#idtype").attr("data-values",selectItem.value)
$("#idtype").select({
title: "请选择证件类型",
items: items
$.alert("请选择证件类型", "错误");
return;
}
- /*var agree = $("input[type=checkbox]:checked").val();
- if(isEmpty(agree)){
- $.alert("请同意用户协议与隐私条款", "提示");
- return;
- }*/
+ cardnum = cardnum.trim();
+ name = name.trim();
+ idno = idno.trim();
+
$.showLoading("正在处理");
var param = {
"cardno": cardnum,
$.hideLoading();
console.log(ret)
if (ret.code == 200) {
- window.localStorage.setItem("phoneX",ret.phonex);
window.localStorage.setItem("name", name);
+ window.localStorage.setItem("cardno", cardnum);
+ window.localStorage.setItem("idtype", idtype);
+ window.localStorage.setItem("idno", idno);
+ window.localStorage.setItem("phoneX",ret.phonex);
window.localStorage.setItem("personid", ret.personid);
window.localStorage.setItem("signed", ret.signed);
window.localStorage.setItem("paypwdset", ret.paypwdset);
phone = window.localStorage.getItem("phone");
$("#phone").text(phone)
}
+ $("#codebtn").attr("disabled","disabled")
+ $("#codebtn").addClass("vcodedisabled")
+ btnTime('codebtn');
+ },
+ getCode: function() {
+ var name = window.localStorage.getItem("name");
+ var cardno = window.localStorage.getItem("cardno");
+ var idtype = window.localStorage.getItem("idtype");
+ var idno = window.localStorage.getItem("idno");
+
+ $.showLoading("正在请求");
+ var param = {
+ "cardno": cardno,
+ "idtype": idtype,
+ "name": name,
+ "idno": idno
+ }
+ V1Bindcard(param, function(ok, ret) {
+ if (ok) {
+ $.hideLoading();
+ if (ret.code == 200) {
+ $("#codebtn").attr("disabled","disabled")
+ $("#codebtn").addClass("vcodedisabled")
+ btnTime('codebtn');
+ } else {
+ if (ret.code == -1) {
+ $.alert(ret.msg, "提示", function() {
+ window.location = "main.html"
+ });
+ } else {
+ $.alert(ret.msg, "错误");
+ }
+ }
+ } else {
+ $.hideLoading();
+ $.alert("请求失败了 " + ret.status + ",请稍后再试", "错误");
+ }
+ })
},
doNext: function() {
var code = $("#code").val();
$.alert("加载失败了:" + ret.status, "错误");
}
})
+ },
+ unBindcard: function(){
+ var dialog = new auiDialog({})
+ dialog.prompt({
+ title:"请输入支付密码",
+ text:'请输入支付密码',
+ buttons:['取消','确定']
+ },function(ret){
+ console.log(ret);
+ if(ret.buttonIndex == 2){
+ if(!isEmpty(ret.text)){
+ $.showLoading("正在请求");
+ var param = {
+ "paypwd":ret.text
+ }
+ V1Unbindcard(param,function(ok, ret, err) {
+ if (ok) {
+ $.hideLoading();
+ if(ret.code==200){
+ window.localStorage.removeItem("userid");
+ $.alert('解绑成功', "提示", function() {
+ window.location = 'main.html'
+ });
+ }else{
+ $.alert(ret.msg, "错误");
+ }
+ } else {
+ $.hideLoading();
+ $.alert("请求失败了:" + ret.status, "错误");
+ }
+ })
+ }
+ }
+ });
+ var input = $(".aui-dialog-body").find("input");
+ if(input){
+ input.attr("type","password");
+ }
}
};
app.initialize();
})
});
$('#secBtn').click(function() {
- window.location = "security.html";
- /*app.checkBefore(function() {
+ //window.location = "security.html";
+ app.checkBefore(function() {
app.checkOther(function() {
window.location = "security.html";
})
- })*/
+ })
});
- $("#doorBtn").click(function(){
+ /*$("#doorBtn").click(function(){
app.checkBefore(function() {
showRet(DOOR_URl);
})
- })
+ })*/
$('#usersec').click(function() {
app.checkBefore(function() {
app.checkOther(function() {
})
});
this.initData();
+ this.backBtn();
+ },
+ backBtn: function(){
+ document.addEventListener("backbutton", function(e){
+ e.preventDefault();
+ navigator.app.exitApp();
+ }, false);
},
initTab: function() {
$("#maincontent").css("top", $("#maintop").height())
} else {
window.location = 'cardinfor.html'
}
+ },
+ logout:function(){
+ window.localStorage.removeItem("token");
+ window.location = "login.html";
}
};
app.initialize();
+var brightness;
+var bvalue;
+var setted= false;
var app = {
// Application Constructor
initialize: function() {
document.addEventListener('deviceready', this.onDeviceReady.bind(this), false);
},
-
onDeviceReady: function() {
var uid = window.localStorage.getItem("token");
- this.loadQrcode();
+ app.loadQrcode();
setInterval(function () {
window.location.reload();
},100000);
+
+ brightness = cordova.plugins.brightness;
+ if(brightness){
+ brightness.getBrightness(function(val){
+ bvalue = val;
+ }, function(err){
+ console.log(err);
+ });
+ }
},
loadQrcode: function() {
$.showLoading("加载中");
$.hideLoading();
var qrcode = new QRCode(document.getElementById("qrcode"), {
text: ret.qrcode,
- width: 150,
- height: 150,
+ width: 200,
+ height: 200,
colorDark: "#000000",
colorLight: "#ffffff",
correctLevel: QRCode.CorrectLevel.L
});
+ if(!setted&&brightness){
+ brightness.setBrightness(1, function(ret){
+ console.log(ret);
+ setted = true;
+ brightness.setKeepScreenOn(true);
+ }, function(e){
+ console.log(e)
+ });
+ }
} else {
$.hideLoading();
$.alert("请求失败,请稍后再试", "错误");
$.hideLoading();
var qrcode = new QRCode(document.getElementById("qrcode"), {
text: ret.qrcode,
- width: 150,
- height: 150,
+ width: 200,
+ height: 200,
colorDark: "#000000",
colorLight: "#ffffff",
correctLevel: QRCode.CorrectLevel.L
$.alert("请求失败了:" + ret.status + "请稍后再试", "错误");
}
})
+ },
+ backTo:function(){
+ if(brightness&&bvalue){
+ brightness.setBrightness(bvalue, function(ret){
+ brightness.setKeepScreenOn(false);
+ }, function(e){
+ console.log(e)
+ });
+ }
+ window.location.href='main.html';
}
};
app.initialize();
\ No newline at end of file
"platform":device.name+","+device.platform+","+device.version,
"uuid":device.uuid
}
- console.log(param)
ICheckCode(param,function(ok,ret){
if(ok){
$.hideLoading();
} else {
// The scan completed, display the contents of the QR code:
QRScanner.destroy();
+ //$.alert(text, '提示');
showRet(text);
}
}
//开始扫描,需要将页面的背景设置成透明
QRScanner.show();
+ console.log("QRScanner.scan");
} else if (status.denied) {
// The video preview will remain black, and scanning is disabled. We can
// try to ask the user to change their mind, but we'll have to send them
});
},
goPage: function() {
- //QRScanner.destroy();
window.location = "main.html"
}
};
app.initialize();
-function showRet1(url){
+var inAppBrowserRef;
+function showRet(url){
if(isEmpty(url)){
return;
}
}
}
});
+ //ref.show();
}
-function showRet(url) {
+function showRet1(url) {
if(isEmpty(url)){
return;
}
var userid = window.localStorage.getItem("userid");
- if (url.indexOf("yy.dlsmk.cn")>=0) {
- if(url.indexOf("?")>0){
- url=url+'&userid='+userid;
- }else{
- url=url+'?userid='+userid;
- }
+ if(url.indexOf("?")>0){
+ url=url+'&userid='+userid;
+ }else{
+ url=url+'?userid='+userid;
}
console.log(url)
- var inAppBrowserRef = cordova.ThemeableBrowser.open(url, '_blank', {
+ inAppBrowserRef = cordova.ThemeableBrowser.open(url, '_blank', {
statusbar: {
color: '#03a9f4ff'
},
showPageTitle: true
},
backButton: {
- image: 'back.png',
- imagePressed: 'back.png',
+ wwwImage: 'img/back.png',
+ wwwImagePressed: 'img/back.png',
align: 'left',
event: 'backPressed'
},
closeButton: {
- image: 'close.png',
- imagePressed: 'close.png',
+ wwwImage: 'img/close.png',
+ wwwImagePressed: 'img/close.png',
align: 'left',
event: 'closePressed'
},
backButtonCanClose: true
- }).addEventListener('loadstart', function(params){
- if (params.url.indexOf("yy.dlsmk.cn")>=0) {
- if (params.url.indexOf("userid")<0) {
- if(params.url.indexOf("?")>0){
- params.url=params.url+'&userid='+userid;
- }else{
- params.url=params.url+'?userid='+userid;
- }
- //ref.hide();
- var neRef = cordova.ThemeableBrowser.open(params.url, '_blank');
- neRef.addEventListener('closePressed', function(e){
- neRef.close();
- window.location = "main.html"
- });
- }
- }
- });
+ }).addEventListener('backPressed', function(e) {
+ //alert('back pressed');
+ }).addEventListener('closePressed', function(e) {
+ //alert('closePressed pressed');
+ inAppBrowserRef.close();
+ window.location = "main.html"
+ }).addEventListener(cordova.ThemeableBrowser.EVT_ERR, function(e) {
+ console.error(e.message);
+ }).addEventListener(cordova.ThemeableBrowser.EVT_WRN, function(e) {
+ console.log(e.message);
+ }).addEventListener('loadstart', function(params,e){
+ console.log("11111111"+JSON.stringify(params));
+ if (params.url.indexOf("yy.dlsmk.cn")>=0) {
+ if (params.url.indexOf("userid")<0) {
+ if(params.url.indexOf("?")>0){
+ params.url=params.url+'&userid='+userid;
+ }else{
+ params.url=params.url+'?userid='+userid;
+ }
+ inAppBrowserRef.close();
+ inAppBrowserRef = null;
+ openUrl(params.url);
+ }
+ }
+ });
//inAppBrowserRef.addEventListener('loadstart', loadStartCallBack);
//inAppBrowserRef.addEventListener('beforeload', beforeloadCallBack);
}
-function loadStartCallBack(params,callback) {
- console.log("1",params.url);
-}
-function beforeloadCallBack(params,callback) {
- console.log("2",params.url);
+
+function openUrl(url){
+ inAppBrowserRef = cordova.ThemeableBrowser.open(url, '_blank', {
+ statusbar: {
+ color: '#03a9f4ff'
+ },
+ toolbar: {
+ height: 44,
+ color: '#03a9f4ff'
+ },
+ title: {
+ color: '#ffffffff',
+ showPageTitle: true
+ },
+ backButton: {
+ wwwImage: 'img/back.png',
+ wwwImagePressed: 'img/back.png',
+ align: 'left',
+ event: 'backPressed'
+ },
+ closeButton: {
+ wwwImage: 'img/close.png',
+ wwwImagePressed: 'img/close.png',
+ align: 'left',
+ event: 'closePressed'
+ },
+ backButtonCanClose: true
+ }).addEventListener('backPressed', function(e) {
+ }).addEventListener('closePressed', function(e) {
+ inAppBrowserRef.close();
+ window.location = "main.html"
+ }).addEventListener(cordova.ThemeableBrowser.EVT_ERR, function(e) {
+ console.error(e.message);
+ }).addEventListener(cordova.ThemeableBrowser.EVT_WRN, function(e) {
+ console.log(e.message);
+ }).addEventListener('loadstart', function(params,e){
+ console.log("333333"+JSON.stringify(params));
+ });
}
-var dev = false;
+var dev = true;
var SERVER = "https://yy.dlsmk.cn/payapi/mobileapi";
var DOOR_URl = "http://172.28.43.8:8099/door/app/appMintUIindex";//门禁服务地址
var GLOBAL_TODAY="";
var GLOBAL_YESTERDAY="";
var CURRENT_INDEX=1;
if (dev) {
- SERVER = "http://172.28.201.70:10010/payapi/mobileapi";
+ SERVER = "http://172.28.43.7:8099/payapi/mobileapi";
+}
+function V1Unbindcard(param,callback){
+ ajaxPost("/v1/unbindcard", param, callback)
+}
+
+function V1UnSignbxy(param,callback){
+ ajaxPost("/v1/unsignbxy", param, callback)
}
function V1Qrcode(callback) {
ajaxPost("/i/code", param, callback)
}
-
function IServeTime(callback) {
ajaxPost("/i/time", {}, callback)
}
var db = null;
+var canCheck = false;
+var wait = 5;
var app = {
-
// Application Constructor
initialize: function() {
document.addEventListener('deviceready', this.onDeviceReady.bind(this), false);
+ canCheck = false;
+ wait=5;
},
-
onDeviceReady: function() {
$.showLoading("加载中");
V1Bxy(function(ok, ret, err) {
$("#content").html(ret.page);
if (isEmpty(ret.signed) || ret.signed != 'yes') {
$("#btn").show();
+ app.checkTime();
$("#content").css("bottom", "135px");
} else {
+ $("#unbtn").show();
$("#content").css("bottom", "10px");
}
} else {
}
})
},
+ unAgreeXY: function(){
+ var cum = new auiDialog({});
+ var confirm = cum.alert({
+ title: "提示",
+ msg: '确定解除代扣协议吗?',
+ buttons: ['取消', '解除']
+ }, function(ret) {
+ if (ret.buttonIndex == 2) {
+ $.showLoading("正在请求");
+ var param = {}
+ V1UnSignbxy(param, function(ok, ret, err) {
+ if (ok) {
+ $.hideLoading();
+ if (ret.code == 200) {
+ window.localStorage.setItem("signed", ret.signed);
+ $.alert('解除成功', "提示", function() {
+ window.location = 'main.html'
+ });
+ } else {
+ $.alert(ret.msg, "错误");
+ }
+ } else {
+ $.hideLoading();
+ $.alert("请求失败了:" + ret.status + "请稍后再试", "错误");
+ }
+ })
+ }
+ })
+ },
agreeXY: function() {
+ if(!canCheck){
+ return;
+ }
var agree = $("input[type=checkbox]:checked").val();
if (isEmpty(agree)) {
$.alert("请同意签约代扣协议", "提示");
$.alert("请求失败了:" + ret.status + "请稍后再试", "错误");
}
})
+ },
+ checkTime: function(){
+ if (wait == 0) {
+ $("#signBtn").text("签约代扣协议");
+ $("#signBtn").addClass("aui-btn-info");
+ canCheck = true;
+ }else{
+ $("#signBtn").text(wait+"s 签约代扣协议");
+ wait--;
+ setTimeout(function() {
+ app.checkTime();
+ },1000)
+ }
}
+
};
app.initialize();
\ No newline at end of file
<div class="center-in"><img src="img/icon_securty.png" style="width:28px;height: 28px"></div>
<div class="aui-grid-label" style="margin-top:10px;">账户安全</div>
</div>
- <div class="aui-col-xs-4" id="doorBtn">
+ <!--<div class="aui-col-xs-4" id="doorBtn">
<div class="center-in"><img src="img/icon_door.png" style="width:28px;height: 28px"></div>
<div class="aui-grid-label" style="margin-top:10px;">远程开门</div>
- </div>
+ </div>-->
</div>
</div>
</section>
<header class="aui-bar aui-bar-nav" style="padding-top:25px;font-size: 22px">
我的
</header>
- <section class="aui-content bg-white aui-margin-b-15" style=" margin-top: -2px;">
+ <!-- bg-white -->
+ <section class="aui-content aui-margin-b-15" style=" margin-top: -2px;">
<div class="aui-list aui-media-list aui-list-noborder aui-bg-info user-info">
<div class="aui-list-item aui-list-item-middle top-btn">
<div class="aui-media-list-item-inner ">
</div>
</div>
</div>
- <section class="aui-content aui-grid ">
- <div class="aui-row aui-margin-t-10">
- <div class="aui-col-xs-4 aui-border-r">
- <big class="aui-text-warning" id="user-amount">0.00</big>
- <div class="aui-gird-lable aui-font-size-12">余额</div>
- </div>
- <div class="aui-col-xs-4 aui-border-r">
- <big class="aui-text-success" id="user-point">0</big>
- <div class="aui-gird-lable aui-font-size-12">积分</div>
- </div>
- <div class="aui-col-xs-4 ">
- <big class="aui-text-danger" id="user-coupon">0</big>
- <div class="aui-gird-lable aui-font-size-12">优惠券</div>
- </div>
- </div>
- </section>
-
+ <!--<section class="aui-content aui-grid ">
+ <div class="aui-row aui-margin-t-10">
+ <div class="aui-col-xs-4 aui-border-r">
+ <big class="aui-text-warning" id="user-amount">0.00</big>
+ <div class="aui-gird-lable aui-font-size-12">余额</div>
+ </div>
+ <div class="aui-col-xs-4 aui-border-r">
+ <big class="aui-text-success" id="user-point">0</big>
+ <div class="aui-gird-lable aui-font-size-12">积分</div>
+ </div>
+ <div class="aui-col-xs-4 ">
+ <big class="aui-text-danger" id="user-coupon">0</big>
+ <div class="aui-gird-lable aui-font-size-12">优惠券</div>
+ </div>
+ </div>
+ </section>-->
</section>
<section class="aui-content">
<ul class="aui-list aui-list-in aui-margin-b-15">
</div>
</li>
</ul>
+ <div style="padding: 20px;margin-top: 40px;">
+ <a href="javascript:app.logout();" class="weui-btn weui-btn_warn">退出登录</a>
+ </div>
</section>
</div>
<footer class="aui-bar aui-bar-tab aui-border-t" id="footer">
--- /dev/null
+<!doctype html>
+<html>
+
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0" />
+ <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+ <link rel="stylesheet" type="text/css" href="css/aui.css" />
+ <link rel="stylesheet" type="text/css" href="css/weui.min.css">
+ <link rel="stylesheet" type="text/css" href="css/jquery-weui.min.css">
+ <link rel="stylesheet" type="text/css" href="css/index.css" />
+</head>
+<body>
+<header class="aui-bar aui-bar-nav" style="padding-top:25px;font-size: 22px">
+ 个人信息
+</header>
+<section class="aui-content bg-white aui-margin-b-15" style=" margin-top: -2px;">
+ <div class="aui-list aui-media-list aui-list-noborder aui-bg-info user-info">
+ <div class="aui-list-item aui-list-item-middle top-btn">
+ <div class="aui-media-list-item-inner ">
+ <div class="aui-list-item-media" style="width:3rem;">
+ <img src="img/icon_header.png" class="aui-img-round" id="userlogo">
+ </div>
+ <div class="aui-list-item-inner">
+ <div class="aui-list-item-text text-white aui-font-size-18" id="username">匿名</div>
+ <div class="aui-list-item-text text-white">
+ <div><i class="aui-iconfont aui-icon-mobile aui-font-size-14"></i><span id="userphone"></span></div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <section class="aui-content aui-grid ">
+ <div class="aui-row aui-margin-t-10">
+ <div class="aui-col-xs-4 aui-border-r">
+ <big class="aui-text-warning" id="user-amount">0.00</big>
+ <div class="aui-gird-lable aui-font-size-12">余额</div>
+ </div>
+ <div class="aui-col-xs-4 aui-border-r">
+ <big class="aui-text-success" id="user-point">0</big>
+ <div class="aui-gird-lable aui-font-size-12">积分</div>
+ </div>
+ <div class="aui-col-xs-4 ">
+ <big class="aui-text-danger" id="user-coupon">0</big>
+ <div class="aui-gird-lable aui-font-size-12">优惠券</div>
+ </div>
+ </div>
+ </section>
+
+</section>
+<section class="aui-content">
+ <ul class="aui-list aui-list-in aui-margin-b-15">
+ <li class="aui-list-item" onclick="app.toCard()">
+ <div class="aui-list-item-label-icon">
+ <i class="aui-iconfont aui-icon-cert aui-text-info"></i>
+ </div>
+ <div class="aui-list-item-inner aui-list-item-arrow">
+ <div class="aui-list-item-title">银行卡</div>
+ <div class="aui-list-item-right" id="userbank"></div>
+ </div>
+ </li>
+ <li class="aui-list-item" onclick="app.toSign()">
+ <div class="aui-list-item-label-icon">
+ <i class="aui-iconfont aui-icon-pencil aui-text-danger"></i>
+ </div>
+ <div class="aui-list-item-inner aui-list-item-arrow">
+ <div class="aui-list-item-title">签约代扣免密付</div>
+ <div class="aui-list-item-right" id="usersign"></div>
+ </div>
+ </li>
+ </ul>
+ <ul class="aui-list aui-list-in">
+ <li class="aui-list-item" id="usersec">
+ <div class="aui-list-item-label-icon">
+ <i class="aui-iconfont aui-icon-lock aui-text-info"></i>
+ </div>
+ <div class="aui-list-item-inner aui-list-item-arrow">
+ <div class="aui-list-item-title">账户安全</div>
+ </div>
+ </li>
+ </ul>
+</section>
+</body>
+<script type="text/javascript" src="cordova.js"></script>
+<script type="text/javascript" src="js/lib/jquery-2.1.4.js"></script>
+<script type="text/javascript" src="js/lib/aui-tab.js"></script>
+<script type="text/javascript" src="js/lib/aui-dialog.js"></script>
+<script type="text/javascript" src="js/server.js"></script>
+<script type="text/javascript" src="js/main.js"></script>
+<script type="text/javascript">
+
+</script>
+</html>
\ No newline at end of file
--- /dev/null
+cordova.define("cordova-plugin-brightness.Brightness", function(require, exports, module) {
+'use strict';
+
+var exec = require('cordova/exec');
+
+exports.getBrightness = function( success, error) {
+ exec(success, error, 'Brightness', 'getBrightness', []);
+};
+
+exports.setBrightness = function(value, success, error) {
+ exec(success, error, 'Brightness', 'setBrightness', [value]);
+};
+
+exports.setKeepScreenOn = function(value, success, error) {
+ exec(success, error, 'Brightness', 'setKeepScreenOn', [value]);
+};
+
+});
</head>
<body style="background: #fff" >
<header class="aui-bar aui-bar-nav" style="padding-top:25px;">
- <a class="aui-pull-left" href="main.html">
+ <a class="aui-pull-left" href="javascript:app.backTo()">
<span class="aui-iconfont aui-icon-left"></span>
</a>
<div class="aui-title">付款码</div>
</header>
<div style="padding:10px;overflow: scroll;position: absolute;top:74px;bottom:135px;left: 0;right: 0" id="content">
+ </div>
+ <div class="weui-footer weui-footer_fixed-bottom" style="background: #fff;display: none;" id="unbtn">
+ <section class="aui-content-padded" style="margin-top: 20px;">
+ <div class="aui-btn aui-btn-block " apmode onclick="app.unAgreeXY()" id="unsignBtn">解除代扣协议</div>
+ </section>
</div>
<div class="weui-footer weui-footer_fixed-bottom" style="background: #fff;display: none;" id="btn">
- <div style="margin-top: 10px;">
- <label for="agree" class="weui-agree" style="padding: .5em 5px .5em 15px;display: inline-block;">
- <input id="agree" type="checkbox" class="weui-agree__checkbox" value="yes">
- <span class="weui-agree__text">
- 我已阅读并同意该协议
- </span>
- </label>
- </div>
- <section class="aui-content-padded" style="margin-top: 20px;">
- <div class="aui-btn aui-btn-block aui-btn-info" tapmode onclick="app.agreeXY()">签约代扣协议</div>
- </section>
+ <div style="margin-top: 10px;">
+ <label for="agree" class="weui-agree" style="padding: .5em 5px .5em 15px;display: inline-block;">
+ <input id="agree" type="checkbox" class="weui-agree__checkbox" value="yes">
+ <span class="weui-agree__text">
+ 我已阅读并同意该协议
+ </span>
+ </label>
+ </div>
+ <section class="aui-content-padded" style="margin-top: 20px;">
+ <div class="aui-btn aui-btn-block " tapmode onclick="app.agreeXY()" id="signBtn">签约代扣协议</div>
+ </section>
</div>
</body>
</html>
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="js/lib/jquery-2.1.4.js"></script>
<script type="text/javascript" src="js/lib/jquery-weui.js"></script>
+<script type="text/javascript" src="js/lib/aui-dialog.js"></script>
<script type="text/javascript" src="js/server.js"></script>
<script type="text/javascript" src="js/signxycheck.js"></script>
\ No newline at end of file
};
objectVersion = 46;
objects = {
+
/* Begin PBXBuildFile section */
0207DA581B56EA530066E2B4 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0207DA571B56EA530066E2B4 /* Images.xcassets */; };
04347BD0ABAC4EE0B4CDDDB6 /* jcore-ios-2.1.1.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 444DBF371D8346D7BC7EE35D /* jcore-ios-2.1.1.a */; };
BC998F935D174204820F4015 /* AFURLSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 22AE2683802B4CB1BAF69ABF /* AFURLSessionManager.m */; };
BFA0CF013EEC44F9B2C6FA6E /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0162975BB3964038A51EDED4 /* CFNetwork.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
C04B4EC2FAAD4D328ABA0C95 /* jpush-ios-3.2.1.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CCDEFB0C0632436FA86F0F31 /* jpush-ios-3.2.1.a */; };
+ C0A6FD40F47B434496535606 /* Brightness.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E4D2B8A1F474D9883C50B86 /* Brightness.m */; };
C61263FC7FE642E9B25A81E5 /* DisableStatusbar.m in Sources */ = {isa = PBXBuildFile; fileRef = 61106E22F1D348DDBDC4DC0B /* DisableStatusbar.m */; };
CAE5A91F948A472F9D872EC8 /* CDVStatusBar.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ABBE12B040548F8909BFC7B /* CDVStatusBar.m */; };
CDD6F217CA274CF18EC146D3 /* AdSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 048B6FC037E1479790969D83 /* AdSupport.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
F68EA21E51A3463A8FE2EE92 /* CDVWKWebViewUIDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B73EA28E46846FF84E6AF02 /* CDVWKWebViewUIDelegate.m */; };
F939AD8D22BB769B006B371B /* libsqlite3.0.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = F939AD8C22BB769B006B371B /* libsqlite3.0.tbd */; };
FDE92C386167415E8040F8AB /* AFURLResponseSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = FDEE8379D7A34C55A616F700 /* AFURLResponseSerialization.m */; };
- C0A6FD40F47B434496535606 /* Brightness.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E4D2B8A1F474D9883C50B86 /* Brightness.m */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
1D3623240D0F684500981E51 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
1D3623250D0F684500981E51 /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
1D6058910D05DD3D006BFB54 /* dlapp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = dlapp.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 1E4D2B8A1F474D9883C50B86 /* Brightness.m */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.objc; name = Brightness.m; path = "cordova-plugin-brightness/Brightness.m"; sourceTree = "<group>"; };
1E5CB6025B2E4D14ABFDB037 /* CDVWKWebViewUIDelegate.h */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.h; name = CDVWKWebViewUIDelegate.h; path = "cordova-plugin-wkwebview-engine/CDVWKWebViewUIDelegate.h"; sourceTree = "<group>"; };
22AE2683802B4CB1BAF69ABF /* AFURLSessionManager.m */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.objc; name = AFURLSessionManager.m; path = "cordova-plugin-advanced-http/AFURLSessionManager.m"; sourceTree = "<group>"; };
22DF35565BBA44B1980FFAF5 /* libz.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
7DC7711D3C76485B9E422E3A /* CDVWKProcessPoolFactory.h */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.h; name = CDVWKProcessPoolFactory.h; path = "cordova-plugin-wkwebview-engine/CDVWKProcessPoolFactory.h"; sourceTree = "<group>"; };
7E931FBE72E74C4887498E5F /* AFURLSessionManager.h */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.h; name = AFURLSessionManager.h; path = "cordova-plugin-advanced-http/AFURLSessionManager.h"; sourceTree = "<group>"; };
80B448E71F8941268B78692C /* CDVCamera.m */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.objc; name = CDVCamera.m; path = "cordova-plugin-camera/CDVCamera.m"; sourceTree = "<group>"; };
+ 817A61F7D48245FA9567B115 /* Brightness.h */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.h; name = Brightness.h; path = "cordova-plugin-brightness/Brightness.h"; sourceTree = "<group>"; };
8895AD78E31D471583178B91 /* TextResponseSerializer.h */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.h; name = TextResponseSerializer.h; path = "cordova-plugin-advanced-http/TextResponseSerializer.h"; sourceTree = "<group>"; };
8A8DD2DDC8694A97A56F9FA7 /* CDVLocalFilesystem.m */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.objc; name = CDVLocalFilesystem.m; path = "cordova-plugin-file/CDVLocalFilesystem.m"; sourceTree = "<group>"; };
8BFF0D502E2241F0A89DF67F /* CDVStatusBar.h */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.h; name = CDVStatusBar.h; path = "cordova-plugin-statusbar/CDVStatusBar.h"; sourceTree = "<group>"; };
FCC7E279D80D4FB9BCF2530A /* Bridging-Header.h */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.h; name = "Bridging-Header.h"; path = "cordova-plugin-fingerprint-aio/Bridging-Header.h"; sourceTree = "<group>"; };
FDEE8379D7A34C55A616F700 /* AFURLResponseSerialization.m */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.objc; name = AFURLResponseSerialization.m; path = "cordova-plugin-advanced-http/AFURLResponseSerialization.m"; sourceTree = "<group>"; };
FE0B455916A4481681D59FE0 /* WebKit.framework */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; };
- 1E4D2B8A1F474D9883C50B86 /* Brightness.m */ = {isa = PBXFileReference; name = "Brightness.m"; path = "cordova-plugin-brightness/Brightness.m"; sourceTree = "<group>"; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; explicitFileType = undefined; includeInIndex = 0; };
- 817A61F7D48245FA9567B115 /* Brightness.h */ = {isa = PBXFileReference; name = "Brightness.h"; path = "cordova-plugin-brightness/Brightness.h"; sourceTree = "<group>"; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; explicitFileType = undefined; includeInIndex = 0; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
- <string>1.0.5</string>
+ <string>1.0.6</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
- <string>1.0.5</string>
+ <string>1.0.6</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSAppTransportSecurity</key>
<key>NSCameraUsageDescription</key>
<string>APP需要使用您的相机权限,没有该权限将无法完成扫一扫功能</string>
<key>NSFaceIDUsageDescription</key>
- <string/>
+ <string></string>
<key>NSMainNibFile</key>
- <string/>
+ <string></string>
<key>NSMainNibFile~ipad</key>
- <string/>
+ <string></string>
<key>NSPhotoLibraryUsageDescription</key>
<string>APP需要使用您的相册权限,没有该权限将无法完成扫一扫功能</string>
<key>UIBackgroundModes</key>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
</array>
</dict>
-</plist>
\ No newline at end of file
+</plist>
},
"cordova-plugin-brightness": {
"PACKAGE_NAME": "com.dalicitycard.app"
+ },
+ "cordova-plugin-file": {
+ "PACKAGE_NAME": "com.supwisdom.dlapp"
}
},
"dependent_plugins": {
"cordova-plugin-add-swift-support": {
"PACKAGE_NAME": "com.supwisdom.dlapp"
},
- "cordova-plugin-file": {
- "PACKAGE_NAME": "com.supwisdom.dlapp"
- },
"cordova-plugin-jcore": {
"PACKAGE_NAME": "com.supwisdom.dlapp"
}
},
"cordova-plugin-brightness": {
"PACKAGE_NAME": "com.dalicitycard.app"
+ },
+ "cordova-plugin-file": {
+ "PACKAGE_NAME": "com.supwisdom.dlapp"
}
},
"dependent_plugins": {
"cordova-plugin-add-swift-support": {
"PACKAGE_NAME": "com.supwisdom.dlapp"
},
- "cordova-plugin-file": {
- "PACKAGE_NAME": "com.supwisdom.dlapp"
- },
"cordova-plugin-jcore": {
"PACKAGE_NAME": "com.supwisdom.dlapp"
}
"cordova-plugin-file": {
"source": {
"type": "registry",
- "id": "cordova-plugin-file@>=2.0.0"
+ "id": "cordova-plugin-file@^6.0.1"
},
- "is_top_level": false,
- "variables": {}
+ "is_top_level": true,
+ "variables": {
+ "ANDROID_SUPPORT_V4_VERSION": "27.+"
+ }
},
"cordova-plugin-statusbar": {
"source": {
},
"cordova-plugin-brightness": {
"PACKAGE_NAME": "$(PRODUCT_BUNDLE_IDENTIFIER)"
+ },
+ "cordova-plugin-file": {
+ "PACKAGE_NAME": "$(PRODUCT_BUNDLE_IDENTIFIER)"
}
},
"dependent_plugins": {
"cordova-plugin-add-swift-support": {
"PACKAGE_NAME": "$(PRODUCT_BUNDLE_IDENTIFIER)"
},
- "cordova-plugin-file": {
- "PACKAGE_NAME": "$(PRODUCT_BUNDLE_IDENTIFIER)"
- },
"cordova-plugin-jcore": {
"PACKAGE_NAME": "$(PRODUCT_BUNDLE_IDENTIFIER)"
}
<div class="weui-cell__ft" id="cardstatus"></div>
</div>
</div>
+ <div style="padding: 20px;margin-top: 40px;">
+ <a href="javascript:app.unBindcard();" class="weui-btn weui-btn_warn">解除绑定</a>
+ </div>
</div>
</body>
</html>
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="js/lib/jquery-2.1.4.js"></script>
<script type="text/javascript" src="js/lib/jquery-weui.js"></script>
+<script type="text/javascript" src="js/lib/aui-dialog.js"></script>
<script type="text/javascript" src="js/server.js"></script>
<script type="text/javascript" src="js/cardinfor.js"></script>
\ No newline at end of file
$.alert("加载失败了:" + ret.status, "错误");
}
})
+ },
+ unBindcard: function(){
+ var dialog = new auiDialog({})
+ dialog.prompt({
+ title:"请输入支付密码",
+ text:'请输入支付密码',
+ buttons:['取消','确定']
+ },function(ret){
+ console.log(ret);
+ if(ret.buttonIndex == 2){
+ if(!isEmpty(ret.text)){
+ $.showLoading("正在请求");
+ var param = {
+ "paypwd":ret.text
+ }
+ V1Unbindcard(param,function(ok, ret, err) {
+ if (ok) {
+ $.hideLoading();
+ if(ret.code==200){
+ window.localStorage.removeItem("userid");
+ $.alert('解绑成功', "提示", function() {
+ window.location = 'main.html'
+ });
+ }else{
+ $.alert(ret.msg, "错误");
+ }
+ } else {
+ $.hideLoading();
+ $.alert("请求失败了:" + ret.status, "错误");
+ }
+ })
+ }
+ }
+ });
+ var input = $(".aui-dialog-body").find("input");
+ if(input){
+ input.attr("type","password");
+ }
}
};
app.initialize();
} else {
window.location = 'cardinfor.html'
}
+ },
+ logout:function(){
+ window.localStorage.removeItem("token");
+ window.location = "login.html";
}
};
app.initialize();
console.log(e)
});
}
- window,location.href='main.html';
+ window.location.href='main.html';
}
};
app.initialize();
\ No newline at end of file
if (dev) {
SERVER = "http://172.28.43.7:8099/payapi/mobileapi";
}
+function V1Unbindcard(param,callback){
+ ajaxPost("/v1/unbindcard", param, callback)
+}
+
+function V1UnSignbxy(param,callback){
+ ajaxPost("/v1/unsignbxy", param, callback)
+}
function V1Qrcode(callback) {
ajaxPost("/v1/qrcode", {}, callback)
ajaxPost("/i/code", param, callback)
}
-
function IServeTime(callback) {
ajaxPost("/i/time", {}, callback)
}
app.checkTime();
$("#content").css("bottom", "135px");
} else {
+ $("#unbtn").show();
$("#content").css("bottom", "10px");
}
} else {
}
})
},
+ unAgreeXY: function(){
+ var cum = new auiDialog({});
+ var confirm = cum.alert({
+ title: "提示",
+ msg: '确定解除代扣协议吗?',
+ buttons: ['取消', '解除']
+ }, function(ret) {
+ if (ret.buttonIndex == 2) {
+ $.showLoading("正在请求");
+ var param = {}
+ V1UnSignbxy(param, function(ok, ret, err) {
+ if (ok) {
+ $.hideLoading();
+ if (ret.code == 200) {
+ window.localStorage.setItem("signed", ret.signed);
+ $.alert('解除成功', "提示", function() {
+ window.location = 'main.html'
+ });
+ } else {
+ $.alert(ret.msg, "错误");
+ }
+ } else {
+ $.hideLoading();
+ $.alert("请求失败了:" + ret.status + "请稍后再试", "错误");
+ }
+ })
+ }
+ })
+ },
agreeXY: function() {
if(!canCheck){
return;
<header class="aui-bar aui-bar-nav" style="padding-top:25px;font-size: 22px">
我的
</header>
- <section class="aui-content bg-white aui-margin-b-15" style=" margin-top: -2px;">
+ <!-- bg-white -->
+ <section class="aui-content aui-margin-b-15" style=" margin-top: -2px;">
<div class="aui-list aui-media-list aui-list-noborder aui-bg-info user-info">
<div class="aui-list-item aui-list-item-middle top-btn">
<div class="aui-media-list-item-inner ">
</div>
</div>
</div>
- <section class="aui-content aui-grid ">
- <div class="aui-row aui-margin-t-10">
- <div class="aui-col-xs-4 aui-border-r">
- <big class="aui-text-warning" id="user-amount">0.00</big>
- <div class="aui-gird-lable aui-font-size-12">余额</div>
- </div>
- <div class="aui-col-xs-4 aui-border-r">
- <big class="aui-text-success" id="user-point">0</big>
- <div class="aui-gird-lable aui-font-size-12">积分</div>
- </div>
- <div class="aui-col-xs-4 ">
- <big class="aui-text-danger" id="user-coupon">0</big>
- <div class="aui-gird-lable aui-font-size-12">优惠券</div>
- </div>
- </div>
- </section>
-
+ <!--<section class="aui-content aui-grid ">
+ <div class="aui-row aui-margin-t-10">
+ <div class="aui-col-xs-4 aui-border-r">
+ <big class="aui-text-warning" id="user-amount">0.00</big>
+ <div class="aui-gird-lable aui-font-size-12">余额</div>
+ </div>
+ <div class="aui-col-xs-4 aui-border-r">
+ <big class="aui-text-success" id="user-point">0</big>
+ <div class="aui-gird-lable aui-font-size-12">积分</div>
+ </div>
+ <div class="aui-col-xs-4 ">
+ <big class="aui-text-danger" id="user-coupon">0</big>
+ <div class="aui-gird-lable aui-font-size-12">优惠券</div>
+ </div>
+ </div>
+ </section>-->
</section>
<section class="aui-content">
<ul class="aui-list aui-list-in aui-margin-b-15">
</div>
</li>
</ul>
+ <div style="padding: 20px;margin-top: 40px;">
+ <a href="javascript:app.logout();" class="weui-btn weui-btn_warn">退出登录</a>
+ </div>
</section>
</div>
<footer class="aui-bar aui-bar-tab aui-border-t" id="footer">
--- /dev/null
+<!doctype html>
+<html>
+
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0" />
+ <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
+ <link rel="stylesheet" type="text/css" href="css/aui.css" />
+ <link rel="stylesheet" type="text/css" href="css/weui.min.css">
+ <link rel="stylesheet" type="text/css" href="css/jquery-weui.min.css">
+ <link rel="stylesheet" type="text/css" href="css/index.css" />
+</head>
+<body>
+<header class="aui-bar aui-bar-nav" style="padding-top:25px;font-size: 22px">
+ 个人信息
+</header>
+<section class="aui-content bg-white aui-margin-b-15" style=" margin-top: -2px;">
+ <div class="aui-list aui-media-list aui-list-noborder aui-bg-info user-info">
+ <div class="aui-list-item aui-list-item-middle top-btn">
+ <div class="aui-media-list-item-inner ">
+ <div class="aui-list-item-media" style="width:3rem;">
+ <img src="img/icon_header.png" class="aui-img-round" id="userlogo">
+ </div>
+ <div class="aui-list-item-inner">
+ <div class="aui-list-item-text text-white aui-font-size-18" id="username">匿名</div>
+ <div class="aui-list-item-text text-white">
+ <div><i class="aui-iconfont aui-icon-mobile aui-font-size-14"></i><span id="userphone"></span></div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <section class="aui-content aui-grid ">
+ <div class="aui-row aui-margin-t-10">
+ <div class="aui-col-xs-4 aui-border-r">
+ <big class="aui-text-warning" id="user-amount">0.00</big>
+ <div class="aui-gird-lable aui-font-size-12">余额</div>
+ </div>
+ <div class="aui-col-xs-4 aui-border-r">
+ <big class="aui-text-success" id="user-point">0</big>
+ <div class="aui-gird-lable aui-font-size-12">积分</div>
+ </div>
+ <div class="aui-col-xs-4 ">
+ <big class="aui-text-danger" id="user-coupon">0</big>
+ <div class="aui-gird-lable aui-font-size-12">优惠券</div>
+ </div>
+ </div>
+ </section>
+
+</section>
+<section class="aui-content">
+ <ul class="aui-list aui-list-in aui-margin-b-15">
+ <li class="aui-list-item" onclick="app.toCard()">
+ <div class="aui-list-item-label-icon">
+ <i class="aui-iconfont aui-icon-cert aui-text-info"></i>
+ </div>
+ <div class="aui-list-item-inner aui-list-item-arrow">
+ <div class="aui-list-item-title">银行卡</div>
+ <div class="aui-list-item-right" id="userbank"></div>
+ </div>
+ </li>
+ <li class="aui-list-item" onclick="app.toSign()">
+ <div class="aui-list-item-label-icon">
+ <i class="aui-iconfont aui-icon-pencil aui-text-danger"></i>
+ </div>
+ <div class="aui-list-item-inner aui-list-item-arrow">
+ <div class="aui-list-item-title">签约代扣免密付</div>
+ <div class="aui-list-item-right" id="usersign"></div>
+ </div>
+ </li>
+ </ul>
+ <ul class="aui-list aui-list-in">
+ <li class="aui-list-item" id="usersec">
+ <div class="aui-list-item-label-icon">
+ <i class="aui-iconfont aui-icon-lock aui-text-info"></i>
+ </div>
+ <div class="aui-list-item-inner aui-list-item-arrow">
+ <div class="aui-list-item-title">账户安全</div>
+ </div>
+ </li>
+ </ul>
+</section>
+</body>
+<script type="text/javascript" src="cordova.js"></script>
+<script type="text/javascript" src="js/lib/jquery-2.1.4.js"></script>
+<script type="text/javascript" src="js/lib/aui-tab.js"></script>
+<script type="text/javascript" src="js/lib/aui-dialog.js"></script>
+<script type="text/javascript" src="js/server.js"></script>
+<script type="text/javascript" src="js/main.js"></script>
+<script type="text/javascript">
+
+</script>
+</html>
\ No newline at end of file
</head>
<body style="background: #fff" >
<header class="aui-bar aui-bar-nav" style="padding-top:25px;">
- <a class="aui-pull-left" href="app.backTo()">
+ <a class="aui-pull-left" href="javascript:app.backTo()">
<span class="aui-iconfont aui-icon-left"></span>
</a>
<div class="aui-title">付款码</div>
</header>
<div style="padding:10px;overflow: scroll;position: absolute;top:74px;bottom:135px;left: 0;right: 0" id="content">
+ </div>
+ <div class="weui-footer weui-footer_fixed-bottom" style="background: #fff;display: none;" id="unbtn">
+ <section class="aui-content-padded" style="margin-top: 20px;">
+ <div class="aui-btn aui-btn-block " apmode onclick="app.unAgreeXY()" id="unsignBtn">解除代扣协议</div>
+ </section>
</div>
<div class="weui-footer weui-footer_fixed-bottom" style="background: #fff;display: none;" id="btn">
- <div style="margin-top: 10px;">
- <label for="agree" class="weui-agree" style="padding: .5em 5px .5em 15px;display: inline-block;">
- <input id="agree" type="checkbox" class="weui-agree__checkbox" value="yes">
- <span class="weui-agree__text">
- 我已阅读并同意该协议
- </span>
- </label>
- </div>
- <section class="aui-content-padded" style="margin-top: 20px;">
- <div class="aui-btn aui-btn-block " tapmode onclick="app.agreeXY()" id="signBtn">签约代扣协议</div>
- </section>
+ <div style="margin-top: 10px;">
+ <label for="agree" class="weui-agree" style="padding: .5em 5px .5em 15px;display: inline-block;">
+ <input id="agree" type="checkbox" class="weui-agree__checkbox" value="yes">
+ <span class="weui-agree__text">
+ 我已阅读并同意该协议
+ </span>
+ </label>
+ </div>
+ <section class="aui-content-padded" style="margin-top: 20px;">
+ <div class="aui-btn aui-btn-block " tapmode onclick="app.agreeXY()" id="signBtn">签约代扣协议</div>
+ </section>
</div>
</body>
</html>
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="js/lib/jquery-2.1.4.js"></script>
<script type="text/javascript" src="js/lib/jquery-weui.js"></script>
+<script type="text/javascript" src="js/lib/aui-dialog.js"></script>
<script type="text/javascript" src="js/server.js"></script>
<script type="text/javascript" src="js/signxycheck.js"></script>
\ No newline at end of file