Commit 587058bd by zxiaozhou

init

parents
module.exports = {
"extends": "airbnb"
};
\ No newline at end of file
.DS_Store
node_modules
.idea
*.iws
*.iml
*.ipr
/dist
/testPackage
/proPackage
# local env files
.env.local
.env.*.local
# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
import app from "./src/main.js";
export default app;
\ No newline at end of file
{
"_from": "ktwl-native-plugin@^1.0.2",
"_id": "ktwl-native-plugin@1.0.2",
"_inBundle": false,
"_integrity": "sha512-tKm64bmzIBu1VWohQyDPu10tyO8VV4zUDd1/CfZh1bLYvbuDkSUqklu5cywIN9VlNJ/3rQWwWR25DGmnEmoCOA==",
"_location": "/ktwl-native-plugin",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "ktwl-native-plugin@^1.0.2",
"name": "ktwl-native-plugin",
"escapedName": "ktwl-native-plugin",
"rawSpec": "^1.0.2",
"saveSpec": null,
"fetchSpec": "^1.0.2"
},
"_requiredBy": [
"/"
],
"_resolved": "http://117.187.63.215:63394/ktwl-native-plugin/-/ktwl-native-plugin-1.0.2.tgz",
"_shasum": "9a13603927c43c09c52cdb81eff510e443771eff",
"_spec": "ktwl-native-plugin@^1.0.2",
"_where": "d:\\project\\bankPlatform",
"author": "",
"bundleDependencies": false,
"dependencies": {},
"deprecated": false,
"description": "首次运行项目请执行命令:",
"devDependencies": {
"@babel/core": "^7.1.6",
"babel-loader": "^8.0.4",
"eslint": "^5.11.0",
"eslint-config-airbnb": "^17.1.0",
"eslint-plugin-import": "^2.14.0",
"eslint-plugin-jsx-a11y": "^6.1.2",
"eslint-plugin-react": "^7.11.1",
"webpack": "^4.24.0",
"webpack-cli": "^3.1.2"
},
"license": "ISC",
"main": "src/index.js",
"name": "ktwl-native-plugin",
"scripts": {
"build": "webpack --mode production --config webpack.config.js",
"serve": "http-server dist"
},
"version": "1.0.2"
}
### 安装使用说明 ###
首次运行项目请执行命令:
npm install
运行发布目录(dist)测试插件API
npm run serve
生成打包JS库(nativeapp.js)
npm run build
### 目录说明 ###
dist: API脚本打包输出目录及API示例调用页
src: API源文件目录
### 使用说明 ###
1. 在普通页面使用
直接在HTML页面中引入dist目录下的nativeapp.js即可使用相应的API
2. 在NPM工程中使用
安装包以来
npm install ktwl-native-plugin -S
引用包并使用
import app from "ktwl-native-plugin";
app.setOptions({ appid: "appdemo", clientid: "10001111" });
app.start();
app.onDisconnect(function(error) {
console.log("app.onDisconnect", error);
console.log(app.isReady());
});
app.onConnected(function(isReady) {
console.log(app.isReady());
console.log("app.onConnected");
});
### 相关资源 ###
源码封装参考:[客户端JS SDK源码封装说明](https://www.yuque.com/iceqv7/mxrkho/scuy4l)
\ No newline at end of file
/**
* @module ajax AJAX网络请求模块
*/
import NativeApp from "./core";
import { debug } from "util";
var callbacks = [];
var isIE = function() {
return navigator.userAgent.indexOf("compatible") > -1 &&
navigator.userAgent.indexOf("MSIE") > -1;
};
/**
* 创建带参数的URL
* @param {*} url
* @param {*} opts
*/
var createUrl = function(url, opts) {
var query = [];
if (opts) {
for (var k in opts) {
var value = opts[k];
if (value) {
query.push(k + "=" + encodeURIComponent());
}
}
}
return url + (url.indexOf("?") > 0 ? "&" : "?") + query.join("&");
};
/**
* 发送GET请求
* @param {*} url 请求地址
* @param {*} opts 请求参数
* @param {*} callback 成功回调方法
* @param {*} errorCallback 错误回调方法
* @param {*} type 回调值类型(json,text)
*/
var get = function(url, opts, callback, errorCallback, type) {
var xhr = new XMLHttpRequest();
xhr.open("GET", createUrl(url, opts), true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
if (xhr.status == 200) {
if (type && type.toLowerCase() == "json") {
callback && callback(JSON.parse(xhr.responseText));
} else {
callback && callback(xhr.responseText);
}
} else {
errorCallback &&
errorCallback(xhr, xhr.statusText || "连接桌面插件代理程序失败");
}
}
};
xhr.send(null);
};
/**
* 发送POST请求
* @param {*} url 请求地址
* @param {*} opts 请求参数
* @param {*} callbackId 回调ID编号
* @param {*} callback 成功回调方法
* @param {*} errorCallback 错误回调方法
* @param {*} type 回调值类型(json,text)
* @param {*} timeout 超时时间 (毫秒)
*/
var post = function(url, opts, callbackId, callback, errorCallback, type) {
if (isIE()) {
if (opts && typeof opts != "string") {
opts = JSON.stringify(opts);
}
if (callbackId) {
callbacks.push({ id: callbackId, callback: callback });
}
var js = document.createElement("script");
js.src =
url + "?ran=" + Math.random() + "&data=" + encodeURIComponent(opts);
js.onload = function() {
document.head.removeChild(js);
};
js.onerror = function() {
errorCallback && errorCallback(null, "连接桌面插件代理程序失败");
};
document.head.appendChild(js);
} else {
var xhr = new XMLHttpRequest();
xhr.open("POST", url, true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
if (xhr.status == 200) {
if (type && type.toLowerCase() == "json") {
callback && callback(JSON.parse(xhr.responseText));
} else {
callback && callback(xhr.responseText);
}
} else {
errorCallback &&
errorCallback(xhr, xhr.statusText || "连接桌面插件代理程序失败");
}
}
};
//JSON.stringify(opts)
if (opts && typeof opts != "string") {
opts = JSON.stringify(opts);
}
xhr.send(opts);
}
};
/**
* 获取回调项数据
* @param {*} id
*/
var getCallback = function(id) {
for (var i in callbacks) {
var item = callbacks[i];
if (item.id == id) {
return item;
}
}
return null;
};
/**
* 删除回调项
* @param {*} item
*/
var removeCallback = function(item) {
for (var i in callbacks) {
if (item.id == callbacks[i].id) {
callbacks.splice(i, 1);
return;
}
}
};
if (window) {
/**
* JSONP跨域回调函数
*/
window.nativeapp_ajax_callback = function(data) {
if (data && data.id) {
var cid = data.id;
var item = getCallback(cid);
if (item) {
item.callback(data);
removeCallback(item);
} else {
NativeApp.dispatchEvent("window", "onNativeAppCallback", data);
}
} else if (data && data.success && data.result == "OK") {
NativeApp.dispatchEvent("window", "onTestPort", data);
} else if (data) {
NativeApp.dispatchEvent("window", "onNativeAppCallback", data);
}
};
}
export default { get: get, post: post };
/**
* @module Camera 成像模块
*/
import NativeApp from "./core";
/**
* 调用摄像头读取照片
* @param string title
* @param int quality Low=0,Middle=1,High=2
* @param string callback
*/
var openCamera = function(title,quality,callback) {
var args = {
plugin: "CameraPlugin",
name: "OpenCamera",
args: [title,quality]
};
NativeApp.execute(args, callback);
};
/**
* 关闭摄像头
* @param function callback
*/
var closeCamera = function(callback) {
var args = {
plugin: "CameraPlugin",
name: "CloseCamera",
args: []
};
NativeApp.execute(args, callback);
};
var isCameraOpen = function(callback)
{
var args = {
plugin: "CameraPlugin",
name: "isCameraOpen",
args: []
};
NativeApp.execute(args, callback);
}
export default { openCamera: openCamera, closeCamera: closeCamera,isCameraOpen:isCameraOpen };
/**
* @module IdCard 读卡器模块
*/
import NativeApp from "./core";
/**
* 调用身份证信息读取
* @param function callback 回调函数
*/
var getIDCardInfo = function(callback) {
var args = {
plugin: "IDCardPlugin",
name: "GetIDCardInfo",
args: []
};
NativeApp.execute(args, callback);
};
export default {
getIDCardInfo: getIDCardInfo
};
/**
* 代理程序网络配置信息
*/
var port = "58953";
var masterPort = "58953";
var slavePort = "9827";
var host = "127.0.0.1";
var appid = "test";
var clientid = "1001";
var downloadUrl ="http://update.gyfccs.com/KtwlDestopExpandSetup.exe";
export default {
port: port,
masterPort: masterPort,
slavePort: slavePort,
host: host,
appid: appid,
clientid: clientid,
downloadUrl:downloadUrl,
/**
* 配置客户端appId及clientId信息
* @param {*} opts
*/
setOptions: function(opts) {
if (opts && opts.appid) {
appid = opts.appid;
}
if (opts && opts.clientid) {
clientid = opts.clientid;
}
}
};
/**
* @module NativeCore 核心库
*/
import ajax from "./ajax";
import config from "./config";
/**
* 请求序号
*/
var uid = 1001;
/**
* 回调集合
*/
var callbacks = {};
/**
* 判断代理程序连接是否就绪
*/
var isReady = false;
/**
* 判断是否为首次错误回调
*/
var isFirstCallback = true;
/**
* 存储连接成功时要执行的回调队列
*/
var readyCallbacks = [];
/**
* 存储连接错误时要执行的回调队列
*/
var errorCallbacks = [];
/**
* 代理程序准备就绪回调方法
* @param {*} callback 回调函数
*/
var ready = function(callback) {
if (isReady) {
callback();
} else {
readyCallbacks.push(callback);
}
};
/**
* 代理程序连接错误回调方法
* @param {*} callback
*/
var onError = function(callback) {
errorCallbacks.push(callback);
};
/**
* 执行代理程序方法
* @param object args 调用参数集合
* @param function callback 调用成功后执行的回调函数
*/
var execute = function(args, callback) {
var init = function() {
if (!isReady) {
callback &&
callback({ success: false, message: "桌面插件代理程序未连接" });
return;
}
var callbackId = addCallback(callback);
args.id = callbackId;
args.appid = config.appid;
args.cid = config.clientid;
ajax.post(
"http://" + config.host + ":" + config.port + "/call.action",
args,
callbackId,
function(result) {
if (result && result.id) {
var cid = result.id;
var callback = getCallback(cid, !result.keep);
if (result.keep) {
queryResult(cid);
}
if (!result.success) {
//console.error(result);
}
if (callback) {
callback(result);
}
}
},
function(xhr, error) {
var result = { success: false, message: error };
//console.error(result);
callback && callback(result);
},
"json"
);
};
init();
};
/**
* 将一个回调方法添加到队列并返回对应的回调ID
* @param function callback 回调方法对象
*/
var addCallback = function(callback) {
var callbackId = new Date().getTime() + uid;
callbacks[callbackId] = callback;
uid++;
return callbackId;
};
/**
* 根据回调ID获取一个回调方法函数
* @param string callbackId 回调ID
* @param boolean autoRemove 是否同时从队列中移除回调方法
*/
var getCallback = function(callbackId, autoRemove) {
var callback = callbacks[callbackId];
if (autoRemove) {
delete callbacks[callbackId];
}
return callback;
};
/**
* 成功回调
* @param object result
*/
var successCallback = function(result) {
if (result && result.success && result.keep != null) {
if (!isReady) {
isReady = true;
for (var i in readyCallbacks) {
readyCallbacks[i]();
}
}
}
};
/**
* 错误回调
* @param XMLHttpRequest xhr
* @param string error
*/
var errorCallback = function(xhr, error) {
if (config.port == config.slavePort) {
if (isReady || isFirstCallback) {
isReady = false;
isFirstCallback = false;
for (var i in errorCallbacks) {
errorCallbacks[i](error, xhr);
}
}
config.port = config.masterPort;
} else {
replyTestPort();
}
};
/**
* 更换备用端口并重试
*/
var replyTestPort = function() {
if (config.port != config.slavePort) {
config.port = config.slavePort;
testPort();
}
};
/**
* 测试端口方法
*/
var testPort = function() {
var args = JSON.stringify({
plugin: "test",
name: "testPort"
});
var url = "http://" + config.host + ":" + config.port + "/call.action";
ajax.post(url, args, null, successCallback, errorCallback, "json");
};
if (window) {
/**
* 端口测试回调监听处理方法
*/
window.addEventListener(
"onTestPort",
function(e) {
successCallback(e.data);
},
false
);
/**
* 原生方法回调监听处理方法
*/
window.addEventListener("onNativeAppCallback", function(e) {
var data = e.data;
if (data.id) {
var callback = getCallback(data.id, !data.keep);
if (callback) {
callback(data);
}
}
});
}
/**
* 监听服务器端回调响应查询方法
* @param string callbackId 回调ID
*/
var queryResult = function(callbackId) {
var args = {
id: callbackId,
cid: config.clientid,
appid: config.appid
};
var url = "http://" + config.host + ":" + config.port + "/query.action";
/**
* 成功回调
* @param object result
*/
var successCallback = function(result) {
if (result && result.id) {
if(!result.keep)
{
return;
}
queryResult(result.id);
var callbackId = result.id;
var callback = getCallback(callbackId);
if (callback) {
callback(result);
}
} else if (result && result.type == "event") {
dispatchEvent(window, result.name, result.data);
}
};
/**
* 错误回调
* @param XMLHttpRequest xhr
* @param string error
*/
var errorCallback = function(xhr, error) {
//console.error("errorCallback",error);
// setTimeout(() => {
// console.log("errorCallback timeout",callbackId);
// queryResult(callbackId);
// }, 1000);
};
ajax.post(url, args, callbackId, successCallback, errorCallback, "json");
};
// /**
// * 创建并触发HTMLEvents事件
// * @param string selector 要触发事件的对象(选择器)
// * @param string eventName 是否在回调完成后自动移除
// * @param object data 事件数据
// */
// var dispatchEvent = function(selector, eventName, data) {
// var dom = null;k = function(xhr, error) {
// setTimeout(NativeApp.queryResult, 1000);
// };
// ajax.post(url, args, null, successCallback, errorCallback, "json");
// };
// /**
// * 创建并触发HTMLEvents事件
// * @param string selector 要触发事件的对象(选择器)
// * @param string eventName 是否在回调完成后自动移除
// * @param object data 事件数据
// */
// var dispatchEvent = function(selector, eventName, data) {
// var dom = null;k = function(xhr, error) {
// setTimeout(NativeApp.queryResult, 1000);
// };
// ajax.post(url, args, null, successCallback, errorCallback, "json");
// };
/**
* 创建并触发HTMLEvents事件
* @param string selector 要触发事件的对象(选择器)
* @param string eventName 是否在回调完成后自动移除
* @param object data 事件数据
*/
var dispatchEvent = function(selector, eventName, data) {
var dom = null;
if (selector == "window") {
dom = window;
} else if (selector == "document") {
dom = document;
} else {
dom = querySelector(selector);
}
if (dom == null) {
return null;
}
var ev = document.createEvent("HTMLEvents");
ev.initEvent(eventName, false, false);
ev.data = data;
return window.dispatchEvent(ev);
};
/**
* HTML标签对象选择器
* @param object selector
*/
var querySelector = function(selector) {
if (typeof selector == "object") {
return selector;
} else {
return document.querySelector(selector);
}
};
const NativeCore = {
ready: ready,
error: onError,
isReady: function() {
return isReady;
},
downloadUrl:function()
{
return config.downloadUrl;
},
readyCallbacks: readyCallbacks,
execute: execute,
addCallback: addCallback,
getCallback: getCallback,
testPort: testPort,
queryResult: queryResult,
dispatchEvent: dispatchEvent,
querySelector: querySelector
};
export default NativeCore;
/**
* @module Demo 测试DEMO插件示例封装模块
*/
import NativeApp from "./core";
/**
* 读取图片信息数据(打开图片文件并返回 BASE64数据)
* @param {*} opts
* @param {*} callback
*/
var getPicture = function(opts, callback) {
var args = {
plugin: "camera",
name: "getPicture",
args: [opts]
};
NativeApp.execute(args, callback);
};
/**
* 打印卡片测试DEMO
* @param {*} imgs
* @param {*} callback
*/
var printCardPhoto = function(imgs, callback) {
var args = {
plugin: "ImagePlugin",
name: "PrintCardPhoto",
args: [imgs]
};
NativeApp.execute(args, callback);
};
/**
* 下载远程图片文件
* @param {*} url 要下载的远程图片地址URL
* @param {*} callback 调用成功执行的回调函数
*/
var downImage = function(url, callback) {
var args = {
plugin: "ImagePlugin",
name: "DownImage",
args: [url]
};
NativeApp.execute(args, callback);
};
/**
* 模拟定位
* @param {*} callback
*/
var geoLocation = function(callback) {
var args = {
plugin: "TestPlugin",
name: "GeoLocation",
args: []
};
NativeApp.execute(args, callback);
};
export default {
getPicture:getPicture,
downImage:downImage,
printCardPhoto:printCardPhoto,
geoLocation:geoLocation
};
This diff is collapsed. Click to expand it.
/**
* @module File 文件调用模块
*/
import NativeApp from "./core";
/**
* 获取本地磁盘列表
* @param function callback 回调方法
*/
var getLogicalDrives = function(callback) {
var args = {
plugin: "FilePlugin",
name: "GetLogicalDrives",
args: []
};
NativeApp.execute(args, callback);
};
/**
* 获取本地特殊文件夹
* @param string special
* @param function callback 回调方法
*/
var getFolderPath = function(special, callback) {
var args = { plugin: "FilePlugin", name: "GetFolderPath", args: [] };
NativeApp.execute(args, callback);
};
/**
* 获取指定目录的文件列表信息(包含目录信息)
* @param string dir
* @param function callback 回调方法
*/
var getFiles = function(dir, callback) {
var args = { plugin: "FilePlugin", name: "GetFiles", args: [dir] };
NativeApp.execute(args, callback);
};
/**
* 获取文件内容信息(文本内容,非BASE64格式数据)
* @param string path
* @param function callback 回调方法
*/
var getFileContent = function(path, callback) {
var args = { plugin: "FilePlugin", name: "GetFileContent", args: [path] };
NativeApp.execute(args, callback);
};
/**
* 返回文件二进制数据信息(BASE64格式)
* @param string path
* @param function callback 回调方法
*/
var getFileData = function(path, callback) {
var args = { plugin: "FilePlugin", name: "GetFileData", args: [path] };
NativeApp.execute(args, callback);
};
/**
*
* @param string path
* @param string contents
* @param function callback 回调方法
*/
var writeAllText = function(path, contents, callback) {
var args = {
plugin: "FilePlugin",
name: "WriteAllText",
args: [path, contents]
};
NativeApp.execute(args, callback);
};
/**
* 向文件追加内容
* @param string path
* @param string contents
* @param function callback 回调方法
*/
var appendAllText = function(path, contents, callback) {
var args = {
plugin: "FilePlugin",
name: "AppendAllText",
args: [path, contents]
};
NativeApp.execute(args, callback);
};
/**
* 向文件写入二进制数据
* @param string path
* @param string data
* @param function callback 回调方法
*/
var writeAllData = function(path, data, callback) {
var args = {
plugin: "FilePlugin",
name: "WriteAllData",
args: [path, data]
};
NativeApp.execute(args, callback);
};
/**
* 创建压缩文件目录
* @param string dirName
* @param string savePath
* @param string password
* @param function callback 回调方法
*/
var createZipForDir = function(dirName, savePath, password, callback) {
var args = {
plugin: "FilePlugin",
name: "CreateZipForDir",
args: [dirName, savePath, password]
};
NativeApp.execute(args, callback);
};
/**
* 创建压缩文件
* @param array files
* @param string savePath
* @param string password
* @param function callback 回调方法
*/
var createZip = function(files, savePath, password, callback) {
var args = {
plugin: "FilePlugin",
name: "CreateZip",
args: [files, savePath, password]
};
NativeApp.execute(args, callback);
};
/**
* 解压缩文件
* @param string zipFile
* @param string dirName
* @param string password
* @param function callback 回调方法
*/
var extractFile = function(zipFile, dirName, password, callback) {
var args = {
plugin: "FilePlugin",
name: "ExtractFile",
args: [zipFile, dirName, password]
};
NativeApp.execute(args, callback);
};
export default {
getLogicalDrives,
getFolderPath,
getFiles,
getFileContent,
getFileData,
writeAllText,
appendAllText,
writeAllData,
createZip,
createZipForDir,
extractFile
};
/**
* @module NativeApp 代理程序HTTP交互 API入口模块
*/
import config from "./config";
import coreModule from "./core";
import fileModule from "./file";
import cameraModule from "./camera";
import documentModule from "./document";
import idCardModule from "./card";
import demoModule from "./demo";
import programModule from "./program";
import usbKeyModule from "./usbkey";
import usbkeymanageModel from "./usbkeymanage";
var tm_run = null;
var nativeModule = {
getOptions: function() {
return config;
},
setOptions: config.setOptions,
start:function()
{
// debugger;
if(tm_run)
{
return;
}
coreModule.testPort();
tm_run = setInterval(coreModule.testPort, 10000);
},
stop:function()
{
if(tm_run){
clearInterval(tm_run);
}
tm_run= null;
},
getIsStart:function()
{
return tm_run != null;
},
onConnected: coreModule.ready,
onDisconnect: coreModule.error,
isReady:function(){
if(tm_run)
{
return coreModule.isReady();
}
return false;
},
downloadUrl:coreModule.downloadUrl,
execute: coreModule.execute,
addCallback: coreModule.addCallback,
getCallback: coreModule.getCallback,
queryResult: coreModule.queryResult,
dispatchEvent: coreModule.dispatchEvent,
querySelector: coreModule.querySelector,
File: fileModule,
Program: programModule,
Camera: cameraModule,
Document: documentModule,
IdCard: idCardModule,
Demo: demoModule,
usbKey:usbKeyModule,
usbkeymanage:usbkeymanageModel
};
if (window) {
window.NativeApp = nativeModule;
}
export default nativeModule;
/**
* @module Program 程序插件模块
*/
import NativeApp from "./core";
/**
* 选择文件对话框
*
* @param string title
* @param string filter
* @param string filename
* @param function callback
*/
var openFileDialog = function(title, filter, filename, callback) {
var args = {
plugin: "NativePlugin",
name: "OpenFileDialog",
args: [title, filter, filename]
};
NativeApp.execute(args, callback);
};
/**
*保存文件对话框
* @param string title
* @param string filter
* @param string filename
* @param function callback
*/
var saveFileDialog = function(title, filter, filename, callback) {
var args = {
plugin: "NativePlugin",
name: "SaveFileDialog",
args: [title, filter, filename]
};
NativeApp.execute(args, callback);
};
/**
* 启动一个应用程序
* @param string applicatonPath 应用程序路径
* @param string appArguments 参数信息
* @param function callback 回调函数
*/
var startProgram = function(applicatonPath, appArguments, callback) {
var args = {
plugin: "NativePlugin",
name: "StartProgram",
args: [applicatonPath, appArguments]
};
NativeApp.execute(args, callback);
};
/**
* 尝试启动一个应用程序
* @param string key 启动方案键名称
* @param string name 启动方案名称
* @param string applicatonPath 应用程序路径(默认寻找全路径,如路径文件不存在则会弹出路径选择框,选择后通过key存储,如需删除可以在插件菜单中删除默认配置)
* @param string appArguments 参数信息
* @param function callback 回调函数
*/
var tryStartProgram = function(key,name,applicatonPath, appArguments, callback) {
var args = {
plugin: "NativePlugin",
name: "TryStartProgram",
args: [key,name,applicatonPath, appArguments]
};
NativeApp.execute(args, callback);
};
/**
* 读取注册表字段
* @param string path 注册表路径
* @param string key 键
* @param function callback 回调函数
*/
var getRegistryValue =function(path,key,callback){
var args = {
plugin: "NativePlugin",
name: "GetRegistryValue",
args: [path,key]
};
NativeApp.execute(args, callback);
}
export default {
saveFileDialog: saveFileDialog,
openFileDialog: openFileDialog,
startProgram: startProgram,
tryStartProgram: tryStartProgram,
getRegistryValue: getRegistryValue
};
/**
* @module usbkey u盾模块
*/
import NativeApp from "./core";
/**
* 调用(游客)签名
* @param string signbody
* @param string callback
*/
var guestSign = function(signbody,callback) {
var args = {
plugin: "UsbKeyPlugin",
name: "guestSign",
args: [signbody]
};
NativeApp.execute(args, callback);
};
/**
* 调用(用户)签名 需要输入U盾密码
* @param string title
* @param string signbody
* @param string callback
*/
var userSign = function(title,signbody,callback) {
var args = {
plugin: "UsbKeyPlugin",
name: "userSign",
args: [title,signbody]
};
NativeApp.execute(args, callback);
};
/**
* 修改用户密码
* @param string oldpassword 可不填写
* @param string newpassword 可不填写
* @param string callback
*/
var editPassword = function(oldpassword,newpassword,callback) {
var args = {
plugin: "UsbKeyPlugin",
name: "editPassword",
args: [oldpassword,newpassword]
};
NativeApp.execute(args, callback);
};
/**
* 获取U盾序列号
* @param string callback
*/
var getSerialNumber = function(callback)
{
var args = {
plugin: "UsbKeyPlugin",
name: "getSerialNumber",
args: []
};
NativeApp.execute(args, callback);
};
/**
* 获取U盾昵称
* @param string callback
*/
var getName = function(callback)
{
var args = {
plugin: "UsbKeyPlugin",
name: "getName",
args: []
};
NativeApp.execute(args, callback);
};
export default { guestSign: guestSign, userSign: userSign, editPassword:editPassword,getSerialNumber:getSerialNumber,getName:getName};
\ No newline at end of file
/**
* @module usbkeymanage u盾模块
*/
import NativeApp from "./core";
/**
* 打开U盾管理界面
* @param string username
* @param string userpassword
* @param string filtersn 忽略序列号
* @param string type 类型 base基础 quick快捷初始化
* @param string system 系统名称
* @param string callback
*/
var openManage = function(username,userpassword,filtersn,type,system,callback){
var args = {
plugin: "UsbKeyManagePlugin",
name: "openManage",
args: [username,userpassword,filtersn,type,system]
};
NativeApp.execute(args, callback);
};
export default { openManage:openManage };
\ No newline at end of file
/**
* 通用工具类
*/
/**
* 将JSON对象转换为可用于模板打印或导出的数据对象
* @param {*} data 要转换的JSON数据
*/
var JsonToPrintFormData = function(data) {
var formdata = [];
var tables = {};
for (var key in data) {
var fieldValue = data[key];
if (fieldValue && fieldValue.constructor == Object) {
if (fieldValue.Rows) {
//复杂数据列表
if (!tables[key]) {
tables[key] = {
Rows: [],
Columns: fieldValue.Columns,
Type: "Complex",
Name: key
};
tables[key].Columns.push({ Name: "_FormData_Id", Type: "Simple" });
}
//创建行
for (var i in fieldValue.Rows) {
var rowData = fieldValue.Rows[i];
var row = [];
row.push({ Name: "_FormData_Id", Value: i });
for (var col in rowData) {
var v = rowData[col];
if (v && v.constructor == Object && v.Rows) {
var tableName = col;
if (!tables[tableName]) {
tables[tableName] = {
Rows: [],
Columns: v.Columns,
Type: "Complex",
Name: tableName,
KeyId: "_FormData_Id",
RelationField: "_FormData_Id",
RelationTable: key
};
tables[tableName].Columns.push({
Name: "_FormData_Id",
Type: "Simple"
});
formdata.push(tables[tableName]);
}
AppendToRows(tables[tableName], v.Rows, i);
} else if (v && v.constructor == Object) {
v.Name = col;
v.Type = "Image";
row.push(v);
} else {
row.push({ Name: col, Value: v, Type: "Simple" });
}
}
tables[key].Rows.push(row);
}
formdata.push(tables[key]);
} else {
//图片字段
if (!fieldValue.Type) {
fieldValue.Type = "Image";
}
fieldValue.Name = key;
formdata.push(fieldValue);
}
} else {
//普通字段
formdata.push({ Name: key, Value: data[key], Type: "Simple" });
}
}
return formdata;
};
/**
* 创建FormData数据集表格行JSON对象
* @param {*} table
* @param {*} rows
* @param {*} pid
*/
var AppendToRows = function(table, rows, pid) {
debugger;
for (var i in rows) {
var rowData = rows[i];
var row = [];
row.push({ Name: "_FormData_Id", Value: pid });
for (var col in rowData) {
var v = rowData[col];
if (v && v.constructor == Object) {
if (!v.Type) {
v.Type = "Image";
}
v.Name = col;
row.push(v);
} else {
row.push({ Name: col, Value: v, Type: "Simple" });
}
}
table.Rows.push(row);
}
};
export default {
JsonToPrintFormData: JsonToPrintFormData,
AppendToRows: AppendToRows
};
//创建webpack.config.js
var webpack = require("webpack");
var path = require("path");
const UglifyJSPlugin = require("uglifyjs-webpack-plugin");
module.exports = {
entry: {
nativeapp: path.join(__dirname, "./src/main.js")
}, //入口文件
output: {
path: path.join(__dirname, "./dist"), //输出位置
filename: "[name].js" //输入文件
}, //插件
plugins: [
new UglifyJSPlugin({
uglifyOptions: {
ie8: true
}
})
]
};
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment